Способны получить сжатые значения только один раз в Python? - PullRequest
0 голосов
/ 26 декабря 2018

Создает два списка в Python, архивирует их с помощью функции zip и сохраняет их в переменной.Пытался распечатать его на консоли и смог успешно распечатать, и когда я попробовал снова, пустой список печатается. снимок экрана То же самое с кортежами. снимок экрана

Почему ямогу получить значения только один раз?Делаете что-то не так?

Python 3.7.1

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Почему это так?

Потому что они похожи на генераторы, поэтому вы можете печатать в первый раз, но когда вы пытаетесь распечатать его снова, он начинается с конца, и нетОсталось значений, см. пример (более четкий, чем ваш):

>>> l=[1,2,3,4]
>>> it=iter(l) # generator basically (as in your question, zip, is also considered as a geneartor here)
>>> list(it)
[1, 2, 3, 4]
>>> list(it)
[]
>>> 

Как решить эту проблему?

Просто замените эту строку:

zipped_list = zip(list1,list2)

С:

zipped_list = list(zip(list1,list2))

Тогда все будет работать нормально.

0 голосов
/ 26 декабря 2018

Функция zip на самом деле является просто итератором - итератор может быть пройден только один раз.Если вы хотите иметь возможность повторять его несколько раз, сначала преобразуйте его в список.

a = [1,2,3]
b = [1,2,3]
c = list(zip(a, b))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...