Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリスト内のクロスパターンペア(全組み合わせの積)を求める方法

はじめに

Pythonでは、2つのリストの要素同士を組み合わせた「クロスパターンペア」(すべての組み合わせ)を扱いたい場面があります。このような場合、リスト内包表記「*」演算子を組み合わせることで、簡潔に実装できます。

本記事では、2つのリストから全組み合わせの積を計算する方法を、具体的なコード例とともに解説します。

サンプルコード

my_list_1 = [14, 35, 26]
my_list_2 = [36, 24, 12]

print("最初のリスト:")
print(my_list_1)
print("2番目のリスト:")
print(my_list_2)

result = [i * j for j in my_list_1 for i in my_list_2]

print("結果:")
print(result)

実行結果

最初のリスト:
[14, 35, 26]
2番目のリスト:
[36, 24, 12]
結果:
[504, 336, 168, 1260, 840, 420, 936, 624, 312]

コードの解説

  • まず、2つの整数リスト my_list_1my_list_2 を定義し、それぞれの内容をコンソールに表示します。

  • 次に、リスト内包表記 [i * j for j in my_list_1 for i in my_list_2] を使って、2つのリストの全要素の組み合わせに対して積を計算します。外側のループが my_list_1、内側のループが my_list_2 を反復するため、3×3=9個の組み合わせが生成されます。

  • 計算結果は変数 result に代入され、最後にコンソールへ出力されます。

補足:itertools.product を使った代替方法

標準ライブラリの itertools.product を利用すると、より意図が明確なコードを書くこともできます。

from itertools import product

result = [i * j for i, j in product(my_list_1, my_list_2)]
print(result)
# [504, 336, 168, 1260, 840, 420, 936, 624, 312]

どちらの方法でも同じ結果が得られますが、組み合わせの生成を明示したい場合は itertools.product の使用がおすすめです。

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5