リストの要素を特定の時間繰り返すイテレータを作成する方法はありますか?例えば、リストが与えられます。以下のリストを生成することができますitertools.repeatlist(color, 7)
の形でイテレータを作成する方法はイテレータのpythonリピートリスト要素
color = ['r', 'g', 'b']
ありますか?
color_list = ['r', 'g', 'b', 'r', 'g', 'b', 'r']
リストの要素を特定の時間繰り返すイテレータを作成する方法はありますか?例えば、リストが与えられます。以下のリストを生成することができますitertools.repeatlist(color, 7)
の形でイテレータを作成する方法はイテレータのpythonリピートリスト要素
color = ['r', 'g', 'b']
ありますか?
color_list = ['r', 'g', 'b', 'r', 'g', 'b', 'r']
あなたのrepeatlist()
機能を構築するためにitertools.islice()
と一緒itertools.cycle()
を使用することができます。
from itertools import cycle, islice
def repeatlist(it, count):
return islice(cycle(it), count)
これは、新しいイテレータを返します。リストオブジェクトが必要な場合は、list()
を呼び出してください。
デモ:
>>> from itertools import cycle, islice
>>> def repeatlist(it, count):
... return islice(cycle(it), count)
...
>>> color = ['r', 'g', 'b']
>>> list(repeatlist(color, 7))
['r', 'g', 'b', 'r', 'g', 'b', 'r']
まさに私が欲しいもの!ありがとう! – zhaodaolimeng
試してみてください。
def repeat_list(l, n):
for i in range(n): yield l[i%len(l)]
これはイテレータを返しません。質問から:*特定の時間にリスト内の要素を繰り返すためのイテレータ**を作成する方法はありますか?*。 –
また、質問にはイタレータが必要であることを意味するタグitertoolsがあります。 –
あなたが実際にあなたが質問をする前にitertoolsのドキュメントを読んでみてくださいましたか? –
@PadraicCunningham:もう1つの質問は*フルサイクルリピート*です。ここのOPは3の倍数で満足する必要があります。 –
@MartijnPieters、http://stackoverflow.com/a/10325689/2141635、これはあなた自身の答えとほとんど同じです。 –