Python で 2 つのリストをマージする方法 (連結と拡張)

Python で 2 つのリストをマージおよび結合する最良の方法を学びます。プラス演算子、拡張メソッド、リストのアンパック、およびチェーンのオプションを比較します。

エディターでこのソリューションを試してください

概要

リスト データセットの結合は、結果を集計したり、データのバッチを処理したり、コレクションに項目を追加したりするときに頻繁に行われる操作です。 Python には、リストをその場で変更するか、新しいリストを作成するかに応じて、リストを結合するいくつかの方法が用意されています。

2 つの既存のリストを結合してまったく新しいリストを作成する最も簡単な方法は、連結演算子 `+` を使用することです (例: `list3 = list1 + list2`)。あるいは、Python 3.5+ では、リスト展開構文 `[*list1, *list2]` を使用できます。これは表現力が高く、リスト作成のどこにでも簡単に追加要素を挿入できます。

別のリストから要素を追加して既存のリストをその場で変更したい場合は、`.extend()` メソッドが最も効率的な選択です。これにより、新しいリストにメモリを割り当てることが回避され、ターゲット リストが直接変更されます。メモリ内のデータを複製せずにマージされたリストをメモリ効率よく走査するには、`itertools.chain()` を使用できます。

コードと実行の出力

このスクリプトは、演算子、拡張、およびアンパック手法を使用して 2 つのリストをマージする方法を示します。

list_a = [1, 2, 3]
list_b = [4, 5, 6]

# 1. Plus operator (creates a new list)
merged_plus = list_a + list_b
print("Using + operator:", merged_plus)

# 2. Unpacking operator (creates a new list)
merged_unpack = [*list_a, *list_b]
print("Using unpacking:", merged_unpack)

# 3. Extend method (modifies list_a in-place)
list_a.extend(list_b)
print("After extending list_a:", list_a)
端子出力
Using + operator: [1, 2, 3, 4, 5, 6]
Using unpacking: [1, 2, 3, 4, 5, 6]
After extending list_a: [1, 2, 3, 4, 5, 6]

段階的な実装

  • + 演算子を使用してリストを結合し、結合された新しいリストを返します。
  • list_a.extend(list_b) を呼び出して、list_b のすべての要素を list_a に直接追加します。
  • アスタリスク解凍演算子 [*list_a, *list_b] を使用して、両方の要素からリストを構築します。

よくある質問

append() と extend() の違いは何ですか?

append() はリスト引数全体を単一のネストされた要素として追加しますが、extend() はリスト引数をアンパックして各要素を個別に追加します。

重複を削除しながらリストを結合するにはどうすればよいですか?

それらをマージしてから結果をセットにキャストすることも、リスト(set(list_a) | set(list_b))のように最初にセットに変換することもできます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。