複数のリストを結合するには+演算子や+=演算子、extendメソッドやシーケンスをアンパックする*演算子を使用する方法がある。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
* 本稿は2022年12月20日に公開された記事をPython 3.12.0で動作確認したものです(確認日:2023年12月1日)。
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list3 = [6, 7, 8]
# 複数のリストを+演算子で結合する
result = list1 + list2
print(result) # [0, 1, 2, 3, 4, 5]
result = list1 + list2 + list3
print(result) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(id(list1)) # 4444844672など。
list1 = list1 + list2 + list3
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(id(list1)) # 4445022912など。上のid値とは異なる
# 複数のリストを+=演算子で結合する
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list1 += list2
print(list1) # [0, 1, 2, 3, 4, 5]
list1 = [0, 1, 2]
list2 = [3, 4, 5]
print(id(list1)) # 4445055936など
list1 += list2 # +=演算子は演算子左側のオブジェクトを変更する
print(list1) # [0, 1, 2, 3, 4, 5]
print(id(list1)) # 4445055936など(list1のidが変わらない)
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list3 = [6, 7, 8]
list1 += list2 + list3 # 累算代入演算子よりも+演算子の方が優先順位が高い
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
# extendメソッドで2つのリストを結合する
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list1.extend(list2)
print(list1) # [0, 1, 2, 3, 4, 5]
# *演算子でリストの要素を展開する
list1 = [0, 1, 2]
list2 = [3, 4, 5]
result = [*list1, *list2]
print(result) # [0, 1, 2, 3, 4, 5]
複数のリストを結合するには幾つかの方法がある。例えば以下のような方法が考えられる。
以下ではこれらの方法を見ていく。なお、リストへの値の追加という観点で、+演算子や+=演算子を紹介している「リスト(配列)に要素を追加するには」という記事もあるので、興味のある方はそちらも参照されたい。
+演算子はその左右に置いたリストを結合し、新しいリストを作成する。以下に例を示す。
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list3 = [6, 7, 8]
# 複数のリストを+演算子で結合する
result = list1 + list2
print(result) # [0, 1, 2, 3, 4, 5]
この例では2つのリスト[0, 1, 2]と[3, 4, 5]が結合され、[0, 1, 2, 3, 4, 5]というリストが新しく作成され、変数resultに代入されている。
3つ以上のリストを+演算子でつないで結合することも可能だ。
result = list1 + list2 + list3
print(result) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
既に述べている通り、+演算子でリストを結合した場合、リストの要素を結合した新しいリストが作成される。そのため、「list1 = list1 + list2」のようにリストを結合すると、元のlist1と結合後のlist1は実際には別のオブジェクトを参照する。
print(id(list1)) # 4444844672など。
list1 = list1 + list2 + list3
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(id(list1)) # 4445022912など。上のid値とは異なる
この例では、もともとの変数list1が参照しているオブジェクトのIDは「4444844672」となっている。だが、「list1 = list1 + list2 + list3」を実行して、作成されたオブジェクトが変数list1に代入されたことで、そのIDは「4445022912」に変化している。
+=演算子でもリストを結合できる。「list1 += list2」とすると、list1が参照するリストにlist2が参照するリストの内容が結合される。以下に例を示す。
list1 = [0, 1, 2]
list2 = [3, 4, 5]
list1 += list2
print(list1) # [0, 1, 2, 3, 4, 5]
この例では、list1が参照する[0, 1, 2]というリストにlist2が参照する[3, 4, 5]というリストの要素が結合され、list1が参照するリストが[0, 1, 2, 3, 4, 5]に変化している点に注意しよう。このように+=演算子は、+演算子とは異なり元のオブジェクトを変更するので、そのIDは変わらない。
Copyright© Digital Advantage Corp. All Rights Reserved.