我将使用Python对列表进行无限迭代,每个元素都会重复多次。例如给定以下列表:
l = [1, 2, 3, 4]
我想要输出每个元素两次,然后重复这个循环。
1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 2, 2 ...
我有一个开始的想法:
def cycle(iterable):
if not hasattr(cycle, 'state'):
cycle.state = itertools.cycle(iterable)
return cycle.next()
>>> l = [1, 2, 3, 4]
>>> cycle(l)
1
>>> cycle(l)
2
>>> cycle(l)
3
>>> cycle(l)
4
>>> cycle(l)
1
但是如何重复每个元素?
编辑
为了澄清,这应该是无限迭代的。此外,我已经将重复元素两次作为最短示例 - 我真的很想重复每个元素n次。
更新
你的解决方案会带我找到我正在寻找的东西吗:
>>> import itertools
>>> def ncycle(iterable, n):
... for item in itertools.cycle(iterable):
... for i in range(n):
... yield item
>>> a = ncycle([1,2], 2)
>>> a.next()
1
>>> a.next()
1
>>> a.next()
2
>>> a.next()
2
>>> a.next()
1
>>> a.next()
1
>>> a.next()
2
>>> a.next()
2
感谢您的快速回答!