25

リスト(または有限イテレータ)を返すイテレータ(無限イテレータ)があるとします。たとえば、

infinite = itertools.cycle([[1,2,3]])

最初のイテレータから各要素を返し、次に 2 番目のイテレータから各要素などを返すイテレータ (明らかに無限) を取得するための Python の良いイディオムは何ですか。上記の例では、 を返し1,2,3,1,2,3,...ます。イテレータは無限であるため、機能しitertools.chain(*infinite)ません。

関連している

4

2 に答える 2

48

Python 2.6 以降では、以下を使用できますitertools.chain.from_iterable

itertools.chain.from_iterable(iterables)

ネストされたジェネレータ内包表記を使用してこれを行うこともできます。

def flatten(iterables):
    return (elem for iterable in iterables for elem in iterable)
于 2008-09-23T13:17:03.033 に答える
11

ジェネレーターを使用します。

(item for it in infinite for item in it)

* コンストラクトは、引数を渡すためにタプルに展開されるため、使用する方法はありません。

于 2008-09-23T13:14:58.857 に答える