在python中创建了两个列表,并使用zip函数将其压缩并将其保存到变量中。尝试将其打印到控制台并能够成功打印,当我再次尝试时,将打印空列表。screenshot 与元组相同。screenshot
为什么我只能检索一次值?做错什么了吗?
Python 3.7.1
答案 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))
然后一切正常。