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_1とmy_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 の使用がおすすめです。
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5