在学zip的时候发现一个问题,下面这段代码:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
zip1 = zip(list1, list2)
for i in zip1:
print(i)
list3 = [i for i in zip1]
print(list3)
执行结果如下
(1, 4)
(2, 5)
(3, 6)
[]
第二次遍历结果为空。
在网上查了一下,先把结论记下来:
在Python2里使用zip/map/filter时,返回值的类型与传入参数的值一致,传入列表,返回值也是列表,列表可以重复遍历;
而在Python3中,zip/map/filter返回的是zip/map/filter对象,是迭代器,只能被遍历一次。如果需要重复遍历。可以使用list()转换成列表。