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

Pythonで2つのリストの要素を加算する方法【append・map・zip】

Pythonでは、2つのリストを「足し合わせる」ことで、両方のリストの要素を含む新しいリストを作成できます。ここでいう「追加」とは、リスト同士を単純に連結するのではなく、同じインデックス位置にある要素同士を加算することを指します。

本記事では、代表的な3つの手法をコード例とともに解説します。なお、いずれの方法でも2つのリストは同じ長さである必要がある点に注意してください。

1. append()を使う方法

append()メソッドを使うと、片方のリストの要素を別のリストへ追加できます。ここでは空の新しいリストを用意し、forループで各インデックスの要素を加算しながら順に追加していきます。

コード例

List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3, 11]
# 元のリストを表示
print("list1 : " + str(List1))
print("list2 : " + str(List2))
newList = []
for n in range(0, len(List1)):
    newList.append(List1[n] + List2[n])
print(newList)

上記のコードを実行すると、次のような結果が得られます。

list1 : [7, 5.7, 21, 18, 2.6666666666666665]
list2 : [9, 15, 6.2, 0.3333333333333333, 11]
[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]

2. map()とadd()を使う方法

map()関数とoperatorモジュールのadd()関数を組み合わせる方法もあります。map()の第1引数にadd関数を指定すると、2つのリストの同じインデックスにある要素同士が順番に加算され、その結果をlist()でリスト化できます。ループ処理を書かずに済むため、コードが簡潔になるのがメリットです。

コード例

from operator import add
# リスト内の2つの要素を加算
List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3, 11]
# 元のリストを表示
print("list1 : " + str(List1))
print("list2 : " + str(List2))
NewList = list(map(add, List1, List2))
print(NewList)

上記のコードを実行すると、次のような結果が得られます。

list1 : [7, 5.7, 21, 18, 2.6666666666666665]
list2 : [9, 15, 6.2, 0.3333333333333333, 11]
[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]

3. zip()とsum()を使う方法

先ほどのmap()と同様の考え方で、zip()とsum()をリスト内包表記と組み合わせる方法もあります。zip()で2つのリストから同じインデックスの要素をペアとして取り出し、それぞれのペアに対してsum()を適用して合計値を求めます。Pythonらしい簡潔な書き方として人気のある手法です。

コード例

# リスト内の2つの要素を加算
List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3, 11]
result = [sum(n) for n in zip(List1, List2)]
print(result)

上記のコードを実行すると、次のような結果が得られます。

[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]

まとめ

2つのリストの要素を加算する方法として、以下の3つを紹介しました。

  • append(): ループで明示的に加算して追加する、最も基本的な方法
  • map() + add(): 関数型アプローチで簡潔に記述できる方法
  • zip() + sum(): リスト内包表記と組み合わせた、Pythonらしい読みやすい方法

用途や可読性の好みに応じて使い分けるとよいでしょう。どの方法でも結果は同じになるため、チームのコーディング規約などに合わせて選択するのがおすすめです。

  1. Pythonで2つのリストの要素を比較する方法|cmp()関数の使い方と注意点

    Python 2では、cmp()関数を使うことで、2つのリストの要素を比較することができます。この関数は、両方の要素が同じ型であればそのまま比較を実行し、その結果を返します。要素の型が異なる場合は、まずそれらが数値かどうかを確認し、どちらも数値であれば必要に応じて型変換(型強制)を行った上で比較します。片方の要素だけが数値である場合、もう一方の要素の方が「大きい」とみなされます(数値は他のすべての型よりも「小さい」と扱われるためです)。それ以外の場合は、型名をアルファベット順に並べた順序で比較されます。さらに、どちらか一方のリストの末尾に先に達した場合には、より長いリストが「大きい」と判断され

  2. Pythonで2つの辞書リストを比較する方法|差分の出力とPandas活用術

    この記事では、Pythonで2つの「辞書のリスト」を比較し、両者の差分を出力する方法を解説します。 ここで紹介する比較方法では、辞書内のキーと値の両方が比較対象になります。 また、Pythonで辞書のリスト同士を比較する場合、要素の並び順は結果に影響しません。キーと値の組み合わせが同じであれば、順序が異なっていても等しいものとして扱われます。 Pythonで辞書のリストを比較する基本方法 if __name__ == __main__: list_1 = [ {id: 123-abc, name: Mike, age: 40}, {name: John