Hoe twee of meerdere lijsten in Python samen te voegen

  1. + lijst samenvoegingsmethode
  2. += aaneenschakelingsmethode
  3. itertools.chain methode
  4. extend() methode
  5. [*a, *b] uitpakmethode
  6. Gevolgtrekking

Een lijst in Python is een gegevensstructuur met een geordende verzameling elementen.

Een bewerking om twee lijsten aan elkaar te lijmen, wordt aaneenschakeling genoemd . Je kan twee lijsten samenvoegen, zowel op de plaats als op de plaats.

Stel dat we twee lijsten hebben die moeten worden samengevoegd,

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

We kunnen meerdere methoden hebben om ze samen te voegen, maar ze verschillen in de prestaties wanneer de lengte toeneemt of het aantal samengevoegde lijsten toeneemt.

We zullen deze verschillende methoden introduceren en u de prestatievergelijking geven.

+ lijst samenvoegingsmethode

+ operator kan twee lijsten samenvoegen en een nieuwe lijst retourneren.

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

+= aaneenschakelingsmethode

+= is vergelijkbaar met de bovenstaande methode, maar het zal de gegevens van de lijst wijzigen voordat deze op zijn plaats komt.

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

itertools.chain methode

chain uit itertools module behandelt opeenvolgende reeksen als één enkele reeks ,

>>> 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]

Informatie

itertools.chain heeft een alternatieve constructor - intertools.chain.from_iterable() . Het heeft een enkel iterabel argument waarvan de input lui wordt geëvalueerd.

extend() methode

Lijst extend werkwijze breidt lijst van voegen elementen van de iterable.

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

Het wijzigt ook de gegevens van de bestaande lijst in plaats van het retourneren van een nieuwe lijst.

[*a, *b] uitpakmethode

Extra uitpakken zoals * voor iterabele uitpakkende operator en ** voor woordenboek uitpakkende operator worden uitgebreid van Python 3.5 zoals uitgelegd in PEP-0448.

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

Deze methode kan niet worden toegepast op het geval van N-lijsten, tenzij u elke lijst handmatig wilt uitpakken.

Waarschuwing

Iterable uitpakken kan niet worden gebruikt als begrip, zoals hieronder gedemonstreerd.

>>> 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

Gevolgtrekking

Versie In-place?
a + b - Nee
list(intertools.chain(a,b)) > = 2.3 Nee
[*a, *b] > = 3,5 Nee
a += b - Ja
a.extend(b) - Ja

We gebruiken de perfplot module om de prestaties van bovenstaande methoden te vergelijken.

Python-lijst Samenvoegingsmethoden Prestatievergelijking

Zoals weergegeven in de grafiek, a.extend(b) en a+b methoden zijn bijna hetzelfde in de prestaties en de beste van alle methoden. list(chain(a,b)) methode heeft de slechtste prestaties.

Gerelateerde Artikelen - Python List

  • Wat is het verschil tussen lijstmethoden toevoegen en uitbreiden
  • Een lijst converteren naar tekenreeks in Python
  • Wat is het verschil tussen del, verwijder en pop op Python-lijsten