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

Pythonでタプルを加算する方法!map関数とlambdaの使い方を徹底解説

Pythonにおいて、タプルは変更不可(イミュータブル)なデータ構造のため、既存のタプルに直接要素を追加することはできません。しかし、2つのタプルの対応する要素同士を加算して、新しいタプルを作成することは可能です。

このような処理を実現するには、「map」関数と「lambda」(無名関数)を組み合わせるのが定番の手法です。

map関数とlambda関数の基本

map関数は、リストやタプルといったイテラブル(反復可能オブジェクト)の各要素に対して、指定した関数や処理を適用し、その結果を返す組み込み関数です。

無名関数(lambda)とは、名前を持たずに定義される関数のことです。通常、Pythonの関数は「def」キーワードを使って定義しますが、lambdaキーワードを使えば、その場で簡潔に関数を記述できます。lambdaは1つの式のみを受け取りますが、引数はいくつでも指定可能で、式の評価結果を戻り値として返します。

サンプルコード

以下は、2つのタプルの各要素を加算する具体例です。

my_tuple_1 = (11, 14, 54, 56, 87)
my_tuple_2 = (98, 0, 10, 13, 76)

print("最初のタプル :")
print(my_tuple_1)
print("2番目のタプル :")
print(my_tuple_2)

my_result = tuple(map(lambda i, j: i + j, my_tuple_1, my_tuple_2))

print("加算後のタプル :")
print(my_result)

実行結果

最初のタプル :
(11, 14, 54, 56, 87)
2番目のタプル :
(98, 0, 10, 13, 76)
加算後のタプル :
(109, 14, 64, 69, 163)

コードの解説

  • まず、2つのタプルを定義し、それぞれコンソールに表示します。
  • lambda関数「i + j」を両方のタプルの各要素に適用し、map関数によって加算処理をマッピングします。
  • mapの結果をtuple()でタプル型へ変換します。
  • 変換結果を変数my_resultに代入します。
  • 最後に、その結果をコンソールに表示します。

代替手法:zipと内包表記を使う方法

よりPythonicな書き方として、zip関数とジェネレータ式(内包表記)を組み合わせる方法もあります。

my_result = tuple(i + j for i, j in zip(my_tuple_1, my_tuple_2))

この方法では、zipが2つのタプルから対応する要素のペアを順に取り出し、それぞれを加算して新しいタプルを生成します。可読性が高く、実務でも広く使われている書き方です。

まとめ

タプルはイミュータブルなため要素の追加・変更はできませんが、map+lambda、またはzip+内包表記を活用すれば、要素ごとの加算結果を新しいタプルとして簡単に作成できます。コードの目的や可読性に応じて、これらの手法を使い分けるとよいでしょう。

  1. Pythonでタプルのリストを反復処理する方法

    タプルのリストを反復処理する最も簡単な方法は、2つのネストされたforループ(二重ループ)を使用することです。外側のループがリストから各タプルを1つずつ取り出し、内側のループがそのタプルに含まれる各要素を順番に走査します。内側のprint()関数では引数にend= を指定することで、改行せずにタプル内のすべての要素を1行に出力できます。さらに、外側のループ内にあるもう1つのprint()が、各タプルの出力後に改行を挿入します。サンプルコードL=[(1,2,3), (4,5,6), (7,8,9,10)] for x in L: for y in x: print(y,

  2. Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説

    Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue