为什么物体在列出两次后会消失?

时间:2014-08-03 14:23:23

标签: python-3.x

>>> 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对象。它只能列出一次:第二次列出时,内容消失了。为什么呢?

1 个答案:

答案 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