Pythonの標準ライブラリitertoolsで簡単に直積を計算する方法


はるか
Pythonの標準ライブラリ、itertoolsを使うと、直積の計算が簡単。

ふゅか
直積って、集合の要素同士の全ての組み合わせを作る方法だよね!
1. 直積とは
二つの集合 \( A \) と \( B \) があるとします。これらの直積 \( A \times B \) は次のように定義されます。
\[ A \times B = \{ (a, b) \mid a \in A, b \in B \} \]

ふゅか
例えば、A = {1, 2} と B = {x, y} があるとするね。直積 A×B は {(1, x), (1, y), (2, x), (2, y)} になるんだ。
2. Pythonで直積を計算する方法
Pythonでは、itertools
モジュールを使用して直積(Cartesian product)を簡単に表すことができます。

はるか
Pythonでは、itertoolsモジュールが使える。

ふゅか
itertools.productを実際に使って直積を計算してみよう!
2.1. itertools.productを使用する
itertools.product
は、任意の数の入力イテラブルから直積を生成する関数です。
2.2. 二つの集合の直積
まず、二つの集合 \( A \) と \( B \) の直積を計算する例を示します。
import itertools
A = [1, 2]
B = ['x', 'y',"xyz"]
# itertools.productを使って直積を計算
product = list(itertools.product(A, B))
print(product)
このコードの出力は次のようになります。
[(1, 'x'), (1, 'y'), (1, 'xyz'), (2, 'x'), (2, 'y'), (2, 'xyz')]
2.3. 三つ以上の集合の直積
同様に、三つ以上の集合の直積も計算できます。
import itertools
A = [1, 2]
B = ['x', 'y']
C = ['a', 'b']
# 三つの集合の直積を計算
product = list(itertools.product(A, B, C))
print(product)
このコードの出力は次のようになります:
[(1, 'x', 'a'), (1, 'x', 'b'), (1, 'y', 'a'), (1, 'y', 'b'), (2, 'x', 'a'), (2, 'x', 'b'), (2, 'y', 'a'), (2, 'y', 'b')]
2.4. 内包表記を使用する方法
itertools
を使わずに内包表記を使って直積を計算することもできます。
A = [1, 2]
B = ['x', 'y']
# 内包表記を使用して直積を計算
product = [(a, b) for a in A for b in B]
print(product)
このコードの出力は次のようになります。
[(1, 'x'), (1, 'y'), (2, 'x'), (2, 'y')]
PR