Python | 重複あり、重複なしで複数のリストを結合する方法

2023-02-26Python リスト,Python

Python | 重複あり、重複なしで複数のリストを結合する方法

Pythonの+演算子やextend()メソッドを使って複数のリストを結合する方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

+演算子で複数のリストを結合する

Pythonのリストは+演算子での結合に対応しています。

以下のサンプルコードでは2つのリストを結合してひとつの新しいリストを作成しています。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "pine"]

# リストを結合する
new_data_list = data_list1 + data_list2

print(new_data_list)
# ['apple', 'banana', 'orange', 'pine']

+演算子で、2以上のリストも問題なく結合する事が可能です。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "pine"]
data_list3 = ["grape", "strawberry"]

# リストを結合する
new_data_list = data_list1 + data_list2 + data_list3

print(new_data_list)
# ['apple', 'banana', 'orange', 'pine', 'grape', 'strawberry']

新しいリスト用に変数を作成しなくても、ひとつ目のリストに残りのリストを追加するといった事も可能です。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "pine"]
data_list3 = ["grape", "strawberry"]

# リストを結合する
data_list1 += data_list2 + data_list3

print(data_list1)
# ['apple', 'banana', 'orange', 'pine', 'grape', 'strawberry']

extend()メソッドを使って複数のリストを結合する

extend()メソッドを使ってリストを結合する事も可能です。
extend()メソッドは引数に結合するリストを指定します。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "pine"]

# リストを結合する
data_list1.extend(data_list2)

print(data_list1)
# ['apple', 'banana', 'orange', 'pine']

また、extend()メソッドは複数のリストを追加対象にする事も可能です。
引数として追加するリストを連続で記述していきます。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "pine"]
data_list3 = ["grape", "strawberry"]

# リストを結合する
data_list1.extend(data_list2, data_list3)

print(data_list1)
# ['apple', 'banana', 'orange', 'pine', 'grape', 'strawberry']

リストの要素を重複させずに結合する

set()関数と|演算子(和集合)を使って結合するリストの要素を重複させずに結合する事も可能です。

サンプルでは以下の手順でリストの要素を重複させずに結合しています。

  1. 結合する複数のリストを用意する
  2. それぞれのリストを一度、set()関数でset型に変換する
  3. |演算子を使って和集合として結合する
  4. list()でリスト型に戻す

※ この方法は一度set型にしていますので、要素の並び順を維持できない事に注意が必要です。

以下のサンプルコードでは、2つのリストのうち重複する値「apple」はひとつだけになるようにリストを結合しています。

data_list1 = ["apple", "banana"]
data_list2 = ["orange", "apple"]

# 要素を重複させずにリストを結合する
new_data_list = list(set(data_list1) | set(data_list2))

# 以下の記述でも結果は同じになる
# new_data_list = list(set(data_list1 + data_list2))

print(new_data_list)
# ['orange', 'apple', 'banana']