假设我有一个很大的数据列表,我想要对其执行一些操作,并且我希望有多个迭代器独立地执行该操作。
data = [1,2,3,4,5]
generator = ((e, 2*e) for e in data)
it1 = iter(generator)
it2 = iter(generator)
我希望这些迭代器是不同的代码对象,但是it1 is it2
返回True
...更令人困惑的是,以下生成器也是如此:
# copied data
gen = ((e, 2*e) for e in copy.deepcopy(data))
# temp object
gen = ((e, 2*e) for e in [1,2,3,4,5])
这意味着实际上,当我调用next(it1)
时,it2
也会递增,这不是我想要的行为。
这是怎么回事,有没有办法做我想做的事?我在Ubuntu 14.04上使用的是python 2.7。
编辑:
我也尝试了以下几种方法:
gen = (e for e in [1,2,3,4,5])
it = iter(gen)
next(it)
next(it)
for e in gen:
print e
它打印3 4 5
..。显然,生成器只是我想象中的一个更受约束的概念。
https://stackoverflow.com/questions/52020719
复制相似问题