私は Python を使用してリストを無限に繰り返し、リスト内の各要素を何度も繰り返しています。たとえば、次のリストが与えられます。
l = [1, 2, 3, 4]
各要素を 2 回出力してから、サイクルを繰り返したいと思います。
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
しかし、各要素をどのように繰り返すのでしょうか?
編集
これを明確にするために、無限に繰り返す必要があります。また、最短の例として要素を 2 回繰り返すことを使用しました 。各要素を 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
素早い回答ありがとうございます。