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

Pythonで複数のリストを1つに結合する方法(+演算子・zip・itertools.chain)

Pythonでデータ分析を行う際、複数のリストを1つのリストにまとめたいケースはよくあります。複数のリストを結合することで、後続の処理では単一の入力リストとして扱えるようになり、ループの回数が減るためパフォーマンス面でもメリットがあります。

この記事では、Pythonで複数のリストを結合する代表的な3つの方法(+演算子zip関数itertools.chain)を、サンプルコードと実行結果とともに解説します。

+演算子を使ってリストを連結する

+ 演算子は、リスト同士をそのまま順番につなげる最もシンプルな方法です。演算子をリスト名の間に記述するだけで結合結果が得られ、各リスト内の要素の順序もそのまま保持されます。

サンプルコード

listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]

# 元のリスト
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)

# + 演算子で結合
res_list = listA + listB + listC

# 結果を出力
print("Combined list is : ",res_list)

実行結果

Given list A: ['Mon', 'Tue', 'Wed']
Given list B: ['2 pm', '11 am', '1 pm']
Given list C: [1, 3, 6]
Combined list is : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]

このように、listA → listB → listC の順に要素が連結された新しいリストが生成されます。元のリスト自体は変更されない点にも注目してください。

zip関数で同じインデックスの要素をまとめる

zip 関数は、各リストから同じインデックス位置にある要素を取り出してタプルとしてまとめ、次のインデックスへと進んでいきます。そのため、「各リストの同じ位置にある要素をセットとして扱いたい」場合に便利です。

サンプルコード

listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]

# 元のリスト
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)

# zip で結合
res_list = list(zip(listA,listB , listC))

# 結果を出力
print("Combined list is : ",res_list)

実行結果

Given list A: ['Mon', 'Tue', 'Wed']
Given list B: ['2 pm', '11 am', '1 pm']
Given list C: [1, 3, 6]
Combined list is : [('Mon', '2 pm', 1), ('Tue', '11 am', 3), ('Wed', '1 pm', 6)]

出力を見ると、曜日・時間・数値が同じインデックスごとにタプルとしてペアリングされているのが分かります。これは単純な連結とは異なる挙動なので、用途に応じて使い分けましょう。

itertools.chainでリストを連結する

itertools モジュールの chain 関数を使うと、複数のリストの要素を順序を保ったまま1つにまとめることができます。+ 演算子と似た結果になりますが、イテレータベースで動作するため、大量のデータを扱う場合や多くのリストを結合する場合に効率的です。

サンプルコード

from itertools import chain

listA = ['Mon', 'Tue', 'Wed']
listB = ['2 pm', '11 am','1 pm']
listC = [1, 3, 6]

# 元のリスト
print("Given list A: " ,listA)
print("Given list B: " ,listB)
print("Given list C: ",listC)

# chain で結合
res_list = list(chain(listA, listB, listC))

# 結果を出力
print("Combined list is : ",res_list)

実行結果

Given list A: ['Mon', 'Tue', 'Wed']
Given list B: ['2 pm', '11 am', '1 pm']
Given list C: [1, 3, 6]
Combined list is : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]

まとめ:使い分けのポイント

  • +演算子:シンプルに順番どおり連結したい場合に最適。コードの可読性も高い。
  • zip関数:複数のリストの同じインデックスの要素をセット(タプル)として扱いたい場合に有効。
  • itertools.chain:順序を保ちつつ、多数のリストや大きなデータを効率的に結合したい場合に向いている。

目的に応じてこれらの方法を使い分けることで、より効率的で読みやすいPythonコードを書くことができます。

  1. Pythonでリストを定義する方法とは?基本の書き方を初心者向けに解説

    リスト(List)は、Pythonにおける基本的なシーケンス型データ構造の一つです。複数の要素を角括弧 [ ] で囲み、カンマで区切って表現します。各要素は文字列や数値など異なるデータ型が混在していても問題ありません。また、リストは順序付き(ordered)コレクションであるため、格納した要素の並び順は保持されます。個々の要素には、0から始まるインデックスを使ってアクセスできます。たとえば最初の要素はインデックス 0、2番目の要素は 1 で参照します。リストの定義例list1 = [physics, chemistry, 1997, 2000] list2 = [1, 2, 3, 4, 5]

  2. Pythonリスト入門:作成から操作、削除まで徹底解説

    このチュートリアルでは、Pythonのリスト(List)について学びます。リストの作成方法、要素へのアクセス、要素の追加・削除、リスト自体の削除など、基本的な操作を一つずつ丁寧に解説していきます。 Pythonでは、リストは角括弧 [] を使って構築し、各要素はカンマ , で区切って記述します。 Pythonのリストは、異なる型のオブジェクトを混在させて格納できるのが特徴です。すべて文字列である必要も、整数である必要もありません。例えば、以下のように複数の型が混ざったリストを作成できます。mixedTypesList = [a, True, 1, 1.0] リストの作成方法 リストは、角括弧