1. ホーム
  2. python

[解決済み】一連のリストのデカルト積を取得する?

2022-02-07 06:06:45

質問

リストのグループからデカルト積(あらゆる値の組み合わせ)を得るにはどうしたらよいですか?

入力します。

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

希望する出力

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

解決方法は?

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)