Hoe twee of meerdere lijsten in Python samen te voegen
-
+
lijst samenvoegingsmethode -
+=
aaneenschakelingsmethode -
itertools.chain
methode -
extend()
methode -
[*a, *b]
uitpakmethode - 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.
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
- Hoe te controleren of een waarde snel voorkomt in de Python-lijst
- Een lijst in Python dedupliceren