ホームページ >バックエンド開発 >Python チュートリアル >itertools.product は Python で複数のリストのデカルト積を生成するにはどうすればよいですか?

itertools.product は Python で複数のリストのデカルト積を生成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 12:23:38341ブラウズ

How Can itertools.product Generate the Cartesian Product of Multiple Lists in Python?

itertools.product を使用した複数のリストのデカルト積

リストのグループのデカルト積を取得するには、値のすべての可能な組み合わせが必要です。が生成される場合は、組み込みの itertools.product 関数を使用します。この機能は、Python バージョン 2.6 以降に組み込まれています。

実装:

import itertools

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]

for element in itertools.product(*somelists):
    print(element)

または、次のように関数に別の引数を指定することもできます:

for element in itertools.product([1, 2, 3], ['a', 'b'], [4, 5]):
    print(element)

どちらのアプローチでも同じ結果が生成されます出力:

(1, 'a', 4)
(1, 'a', 5)
(1, 'b', 4)
(1, 'b', 5)
(2, 'a', 4)
(2, 'a', 5)
...

注:

  • この手法は、深くネストされたループを避けるために一般的に使用されます。
  • デカルトが必要な場合同じリストの積をそれ自体で乗算する場合は、引数をアンパックして itertools.product を使用することを検討してください。 *.
  • このコンテキストで引数をアンパックするための * の使用は、関数呼び出しでの通常の使用と変わりません。

以上がitertools.product は Python で複数のリストのデカルト積を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。