>>> x=zip(range(1,10),range(2,11))
>>> list(x)
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10)]
>>> list(x)
[]
x
是一个zip对象。它只能列出一次:第二次列出时,内容消失了。为什么呢?
答案 0 :(得分:3)
zip
是一个迭代器since Python 3。这意味着,它只能评估一次。这个决定的根源在于,通常只使用zip来循环一次(例如在for x, y in zip(xs, ys)
中),这样就不需要在迭代可能之前在内存中创建整个项目列表。 / p>
当需要创建列表时(如在Python 2中),可以像您一样显式创建列表:
list(zip(xs, ys))
在Python 2中,使用以下方法可以实现类似的行为:
from itertools import izip
x = izip(xs, ys)
# x will behave as in Python 3