Pythonでタプルのリストから組み合わせごとの合計を求める方法
タプルのリストに含まれるタプル同士の組み合わせごとに合計を求めたい場合、itertoolsモジュールの「combinations」メソッドとリスト内包表記を組み合わせることで、簡潔に実現できます。
combinationsメソッドとは
「combinations」メソッドは、入力として渡されたイテラブル(反復可能オブジェクト)から、指定した長さ「r」の部分列をすべて返します。生成される組み合わせは辞書順(レキシコグラフィック順)に並べられ、ソートされた状態で表示されるのが特徴です。
なお、Pythonのリストは整数、浮動小数点数、文字列など、異なるデータ型の値(異種の値)を自由に格納できる柔軟なデータ構造です。タプルのリストとは、複数のタプルをリストで囲んだものを指します。
以下に具体的な実装例を示します。
サンプルコード
from itertools import combinations
my_list = [(67, 45), (34, 56), (99, 123), (10, 56)]
print("The list of tuple is : ")
print(my_list)
my_result = [(b1 + a1, b2 + a2) for (a1, a2), (b1, b2) in combinations(my_list, 2)]
print("The summation combination result is : ")
print(my_result)
出力
The list of tuple is : [(67, 45), (34, 56), (99, 123), (10, 56)] The summation combination result is : [(101, 101), (166, 168), (77, 101), (133, 179), (44, 112), (109, 179)]
コードの解説
- まず、複数のタプルを含むリストを定義し、その内容をコンソールに表示します。
- 次に、「combinations」メソッドを使って、リストから長さ2の組み合わせ(部分列)をすべて取得します。ここでは第2引数に「2」を指定しているため、4つのタプルから2つずつ選ぶ6通りの組み合わせが生成されます。
- リスト内包表記により、各組み合わせについて、1つ目のタプルの要素と2つ目のタプルの対応する要素をそれぞれ加算します。
- 計算結果は新しいタプルとしてまとめられ、変数「my_result」に代入されます。
- 最後に、この変数の内容をコンソールに出力します。
このように、itertoolsの「combinations」とリスト内包表記を活用すれば、ネストしたループを書かずとも、タプル同士の組み合わせに対する演算を一行で美しく記述できます。データ分析や数値処理の場面で非常に便利なテクニックなので、ぜひ覚えておきましょう。
-
Pythonのリスト(list)とタプル(tuple)の違いを徹底解説!使い分けのポイント
Pythonには複数の値をまとめて扱うためのデータ構造として「リスト(list)」と「タプル(tuple)」が用意されています。どちらもシーケンス型の一種で似たような使い方ができますが、「変更可能かどうか」「処理速度」「メモリ効率」などの点で大きな違いがあります。この記事では、それぞれの特徴とコード例、そして6つの観点からの比較表を使って、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list)とはリストは、異なる型のオブジェクトを格納できるミュータブル(変更可能)なコンテナです。要素の追加・削除・変更が自由に行えるため、データの入れ替えや繰り返し処理(イテレーション)によく
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue