このhttp://docs.python.org/2/library/itertools.html#itertools.productを読んでください。すべてが説明されています。
itertools
コレクションを反復処理するための便利な機能を多数備えたパッケージです。便利な機能の 1 つは、product
与えられた反復可能なコレクションのデカルト積を反復処理するジェネレーターを作成する関数です。
の結果はitertools.product
リストではなく、ジェネレーターです。Python ジェネレーターは、他の言語のコルーチンに似ています。これは、必要に応じて組み合わせを計算することを意味します。それぞれのサイズが 100 の 3 つの iterable の積を計算するが、最初の 10 程度しか使用しない場合、itertools.product
100^3 の組み合わせをすべて計算するのではなく、10 の組み合わせしか計算しません。
実際にジェネレーターの代わりにリスト オブジェクトが必要な場合 (スライスなどを計算したい場合)、list
関数を呼び出して、ジェネレーター オブジェクトを引数として渡します。
次のコードは、すべての組み合わせを生成し、結果を出力します。
コード:
import itertools
uk_rock_stars=[1,2,3,4,5,6,7,8,9]
uk_pop_stars=[10,11,12,13,1,4,6,22,81]
us_stars=[22,34,44,7,33,99,22,77,99]
for combination in itertools.product(uk_rock_stars, uk_pop_stars, us_stars):
print combination
出力:
(1, 10, 22)
(1, 10, 34)
(1, 10, 44)
(1, 10, 7)
(1, 10, 33)
(1, 10, 99)
(1, 10, 22)
(1, 10, 77)
(1, 10, 99)
(1, 11, 22)
(1, 11, 34)
(1, 11, 44)
(1, 11, 7)
(1, 11, 33)
(1, 11, 99)
(1, 11, 22)
(1, 11, 77)
(1, 11, 99)
...
etc.