能够在python中仅检索一次压缩值?

时间:2018-12-26 03:08:31

标签: python python-3.x list

在python中创建了两个列表,并使用zip函数将其压缩并将其保存到变量中。尝试将其打印到控制台并能够成功打印,当我再次尝试时,将打印空列表。screenshot 与元组相同。screenshot

为什么我只能检索一次值?做错什么了吗?

Python 3.7.1

2 个答案:

答案 0 :(得分:0)

zip函数实际上只是一个迭代器-迭代器只能被遍历一次。如果要多次迭代,请先将其转换为列表。

a = [1,2,3]
b = [1,2,3]
c = list(zip(a, b))

答案 1 :(得分:0)

这是为什么?

因为它们类似于生成器,所以您可以第一次打印,但是当您尝试再次打印时,它从结尾开始,没有剩余值,请参见示例(比您的清晰):

>>> 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))

然后一切正常。