我有一个包含
不幸的是,我无法得到用于创建循环实例的列表,也没有明显的方法可以实现这一点。
我可以想出一些半合理的理由来解释为什么对于某些类型的输入可迭代对象会被禁止,但是对于元组或者可能甚至是列表(这里可能存在可变性问题),我不明白为什么不可能实现。
有人知道是否可以从一个itertools.cycle实例中提取出非无限的可迭代对象。如果不行,有人知道为什么这个想法不可行吗?
itertools.cycle
实例的类,我希望能够复制它。其中一种方法(也是我能想到的唯一一种方法)是提取初始可迭代对象(即一个列表),并存储循环所在的位置。不幸的是,我无法得到用于创建循环实例的列表,也没有明显的方法可以实现这一点。
import itertools
c = itertools.cycle([1, 2, 3])
print dir(c)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__',
'__hash__', '__init__', '__iter__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'next']
我可以想出一些半合理的理由来解释为什么对于某些类型的输入可迭代对象会被禁止,但是对于元组或者可能甚至是列表(这里可能存在可变性问题),我不明白为什么不可能实现。
有人知道是否可以从一个itertools.cycle实例中提取出非无限的可迭代对象。如果不行,有人知道为什么这个想法不可行吗?
itertools.tee
吗?根据你的需求,我认为你可以运用myiter,copy = itertools.tee(myiter)
这样的语句。 - mgilsoncycle()
没有这个功能。此外,cycle
是用C实现的,所以要“黑客”内部并不容易。 - Joel Cornett