Python で 2つ以上のリストを連結する方法

  1. Python で 2つのリストを連結する +
  2. Python で 2つのリストを連結するための + =
  3. itertools.chain メソッドは Python の 2つのリストを連結します
  4. Python でリストを連結するための extend() メソッド
  5. Python リスト連結の [* a、* b] 展開メソッド
  6. 結論

Python のリストは、要素の順序付きコレクションを保持するデータ構造です。

2つのリストを結合する操作は、連結と呼ばれます。Python では、** in-place または out-of-place **の 2つのリストを連結できます。

連結する 2つのリストがあるとします。

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]

それらを連結するために複数のメソッドを使用することもできますが、長さが長くなるか、連結リストの数が増えると、パフォーマンスが異なります。

これらのさまざまな方法を紹介し、パフォーマンスを比較します。

Python で 2つのリストを連結する +

+演算子は 2つのリストを連結して新しいリストを返すことができます。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = list1 + list2
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

Python で 2つのリストを連結するための + =

+ = は上記のメソッドと似ていますが、最初のリストのデータを変更します。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1 += list2
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

itertools.chain メソッドは Python の 2つのリストを連結します

itertools モジュールの chain 連続したシーケンスを 1つの単一シーケンスとして扱う

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> import itertools
>>> result = list(itertools.chain(list1, list2))
[1, 2, 3, 4, 5, 6, 7, 8]
情報

itertools.chain には代替コンストラクターintertools.chain.from_iterable() があります。入力が遅延評価される単一の反復可能な引数があります。

Python でリストを連結するための extend() メソッド

リストの extend メソッドは、イテラブルの要素を追加することでリストを拡張します。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]

また、新しいリストを返すのではなく、既存のリストのデータをその場で変更します。

Python リスト連結の [* a、* b] 展開メソッド

PEP-0448

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7, 8]
>>> result = [*list1, list2]
>>> result
[1, 2, 3, 4, 5, 6, 7, 8]

この方法は、各リストを手動で解凍する場合を除き、N 個のリストの場合には適用できません。

警告

以下に示すように、反復可能なアンパックは理解に使用できません。

>>> A = [1,2,3]
>>> B = [4,5,6]
>>> C = [7,8,9]
>>> [*t for t in [A,B,C]]
SyntaxError: iterable unpacking cannot be used in comprehension

結論

バージョン 所定の位置に?
a + b - 番号
list(intertools.chain(a,b)) > = 2.3 番号
[*a, *b] > = 3.5 番号
a += b - はい
a.extend(b) - はい

上記のメソッドのパフォーマンスを比較するperfplot モジュールを使用します。

Python リスト連結方法のパフォーマンス比較

グラフに示されているように、a.extend(b)a + b メソッドはパフォーマンスがほぼ同じで、すべてのメソッドの中で最高です。 list(chain(a,b)) メソッドのパフォーマンスは最悪です。

関連記事 - Python List

  • リストメソッドの追加と拡張の違いは何ですか
  • Python でリストを文字列に変換する方法
  • Python リストの del、remove、pop の違いは何ですか
  • Python リストに値が存在するかどうかをすばやく確認する方法
  • Python でリストを重複排除する方法
  • Python でリストをフラット化する方法
  • Python で特定のサイズのリストを作成する方法
  • comments powered by Disqus