ここに投稿された方法でリストのペアワイズクロス積を取ることができることを私は知っています: Python でのペアワイズクロス積
しかし、リスト L と正の整数 n を取り、L とそれ自体の外積を n 回返したいと考えています。これを行うための組み込みの方法はありますか、それともペアのクロス積を反復する必要がありますか?
(または、全能の高校の数学教師によって伝えられた神聖な用語のみを使用する人のための「デカルト積」...)
ここに投稿された方法でリストのペアワイズクロス積を取ることができることを私は知っています: Python でのペアワイズクロス積
しかし、リスト L と正の整数 n を取り、L とそれ自体の外積を n 回返したいと考えています。これを行うための組み込みの方法はありますか、それともペアのクロス積を反復する必要がありますか?
(または、全能の高校の数学教師によって伝えられた神聖な用語のみを使用する人のための「デカルト積」...)
あなたが探しているitertools.product
:
入力イテラブルのデカルト積。
ジェネレーター式のネストされた for ループと同等です。たとえば、product(A, B) は、((x,y) for A in x for B in y) と同じものを返します。
ネストされたループは走行距離計のように循環し、反復ごとに右端の要素が進みます。このパターンは、入力の iterable がソートされている場合、積のタプルがソートされた順序で発行されるように、辞書式の順序付けを作成します。
iterable とそれ自体の積を計算するには、オプションの repeat キーワード引数で繰り返し回数を指定します。たとえば、product(A, repeat=4) は product(A, A, A, A) と同じ意味です。
だからあなたはただする必要があります
itertools.product(L, repeat=n)