我正在使用iter
函数创建一个迭代器,并使用该迭代器迭代几个步骤。
然后我想使用不同的迭代器从同一位置继续进行迭代,而不会影响原始的迭代器对象。
示例:
考虑迭代器对象org_iter
:
>>> a = [1,2,3,4,5]
>>> org_iter = iter(a)
对其进行反复:
>>> next(org_iter)
1
再次使用iter
给出迭代器的相同实例,而不是同一位置的迭代器:
>>> new_iter = iter(org_iter)
>>> next(new_iter) # continuing
2
>>> next(org_iter) # "org_iter is new_iter"
3
由于注释而进行编辑:使用itertools.tee
也不起作用:
>>> new_iter = itertools.tee(org_iter)
>>> next(new_iter[0])
2
>>> next(org_iter)
3
通过使用不同的变量来保存索引号并+=1
对其进行实现,可以实现相同的功能。
或使用enumerate
函数和嵌套的for
循环。
但是我特别询问直接使用迭代器对象的问题。
答案 0 :(得分:1)
我不使用任何外部模块就能想到的一种方法是:
>>> a = [1, 2, 3, 4, 5]
>>> org_iter = iter(a)
>>> id(org_iter)
58713584
>>> new_iter = iter(list(org_iter))
>>> id(new_iter)
58299600