我想制作一个itertools.cycle
对象的浅表副本,但是我不知道怎么做,因为它没有内置的副本方法。我想要实现以下类似的功能,在该示例中,我创建了循环的副本,对其进行了几次迭代,然后再次复制原始副本,然后从循环开始处进行了多次迭代。
c = "ABCD"
cyc = itertools.cycle(c)
cyc_copy = cyc.copy()
for i in range(2):
print(next(cyc_copy))
cyc_copy = cyc.copy()
for i in range(2):
print(next(cyc_copy))
> A
B
A
B
可能需要进行一些重构,但是工厂可以在这里正常工作。
from itertools import cycle
cycle_factory = lambda: cycle('1234')
c1 = cycle_factory()
print next(c1) # 1
c2 = cycle_factory()
print next(c2) # 1
否则,我不确定您是否能够满足每次从循环开始时开始的标准。基于类的方法也可以使用,但是需要更多的开销。
该itertools.tee
方法的问题之一是它将在tee-d迭代器停止而不是从头开始的情况下继续迭代。因此,您必须在一开始就准备。如果您无法控制循环的生成方式,这可能是唯一的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句