我使用 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
感谢您的快速回答!
最佳答案
这个怎么样:
import itertools
def bicycle(iterable, repeat=1):
for item in itertools.cycle(iterable):
for _ in xrange(repeat):
yield item
c = bicycle([1,2,3,4], 2)
print [c.next() for _ in xrange(10)]
编辑:合并bishanty's重复计数参数和 Adam Rosenfield's list comprehension .
关于python - 如何遍历列表,在 Python 中重复每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/383565/