пытается ответить на ваши вопросы ...
1.- почему?
A: Как многие уже упоминали, вы возвращаете список zipped
какгенераторы списков в пределах списка [zipped.append(tuple(liste1[i], liste2[i]) for i in range(length))]
, кстати, не очень хороший способ.вот почему вы получаете эти генераторы.
2.- Что мне нужно изменить или где я могу прочитать / услышать больше, чтобы самому "просветиться"?
A: Если вы все еще хотите сделать это, вам нужно только добавить два элемента, сдвинув скобки и удалив функцию кортежа, например так:
def zipp (liste1, liste2):
length = len(liste1)
zipped = []
[zipped.append( (liste1[i], liste2[i]) ) for i in range(length) ] # not the best way, but still works. This created list is never used.
return zipped
, тогда можно вернуть список
zipp([1,2,3], ['a','b','c'])
Обратите внимание, что оба списка имеют одинаковую длину.В противном случае вам нужно выбрать один (как вы делаете) или найти минимум обеих длин (также можно выбрать самый длинный и заполнить его всем необходимым):
min(len(liste1), len(liste2))
3.- Как я могу использовать генератор, чтобы получить результат?
A: Для того, чтобы он был генератором, вам нужно вывести нужное значение:
def zipp2 (liste1,liste2):
i = 0
minval = min(len(liste1), len(liste2))
while i< minval:
yield (liste1[i], liste2[i])
i += 1
# call the function generator
gen = zipp2([1,2,3], ['a','b','c'])
print(gen)
for p in gen:
print(p)
и получите результаты ...
<generator object zipp2 at 0x7fe46bef3db0>
(1, 'a')
(2, 'b')
(3, 'c')