You have two issues with this expression:
[n + '-' for n in lis[:i]] + lis[i] + ['-'+ n for n in lis[:i]]
First, for size = 5, the length of lis is 5 elements. But, its index i is ranging from 0 to 9 (range(2*size)), so nearly half the values of i will cause an index error on lis.
Second, assuming i is in bounds, we're conatenating three objects:
[n + '-' for n in lis[:i]] # a list
lis[i] # a string
['-'+ n for n in lis[:i]] # a list
To make this work we would need express it as all lists:
[n + '-' for n in lis[:i]] + lis[i:i+1] + ['-'+ n for n in lis[:i]]
I'll leave you to sort out the rest. For me, this seems a potentially recursive problem:
from string import ascii_lowercase as alphabet
def alphagram(size, row=1):
if row:
start = size - abs(row)
letters = alphabet[size-1:start:-1] + alphabet[start:size]
print('-'.join(letters).center(4*size-3, '-'))
alphagram(size, row+1 if row != size else 1-row)
alphagram(6)
OUTPUT
> python3 test.py
----------f----------
--------f-e-f--------
------f-e-d-e-f------
----f-e-d-c-d-e-f----
--f-e-d-c-b-c-d-e-f--
f-e-d-c-b-a-b-c-d-e-f
--f-e-d-c-b-c-d-e-f--
----f-e-d-c-d-e-f----
------f-e-d-e-f------
--------f-e-f--------
----------f----------
>
We can do a compact iterative solution in the manner of @AnnZen but translate it into Python ;-)
from itertools import chain
from string import ascii_lowercase as lower
size = 5
for n in chain(range(1, size+1), range(size-1, 0, -1)):
print('-'.join(lower[size-1:size-n:-1] + lower[size-n:size]).center(4*size-3, '-'))