Come concatenare due o più liste in Python

  1. + per concatenare due liste in Python
  2. += per concatenare due liste in Python
  3. Il metodo itertools.chain concatenerà due liste in Python
  4. extend() metodo per concatenare liste in Python
  5. Metodo [*a, *b] disimballaggio nella concatenazione di liste Python
  6. Conclusione

Una lista in Python è una struttura di dati che contiene una raccolta ordinata di elementi.

Un’operazione per incollare due liste insieme è chiamata concatenazione. Si possono concatenare due liste in Python sia in-place che out-of-place.

Supponiamo di avere due liste da concatenare,

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

Potremmo avere più metodi per concatenarli, ma si differenziano per le prestazioni quando la lunghezza aumenta o il numero di liste concatenate aumenta.

Introdurremo questi diversi metodi e vi daremo il confronto delle prestazioni.

+ per concatenare due liste in Python

L’operatore + potrebbe concatenare due liste e restituirne una nuova.

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

+= per concatenare due liste in Python

+= è simile al metodo di cui sopra, ma cambierà i dati della prima lista in vigore.

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

Il metodo itertools.chain concatenerà due liste in Python

chain dal modulo itertools tratta le sequenze consecutive come una singola sequenza,

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

itertools.chain ha un costruttore alternativo - intertools.chain.from_iterable(). Ha un singolo argomento iterabile i cui input sono valutati pigramente.

extend() metodo per concatenare liste in Python

Il metodo extend estende la lista aggiungendo elementi dall’iterabile.

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

Cambia anche i dati della lista esistente in-place piuttosto che restituire una nuova lista.

Metodo [*a, *b] disimballaggio nella concatenazione di liste Python

Ulteriori operazioni di disimballaggio come * per l’operatore di disimballaggio iterabile e ** per l’operatore di disimballaggio del dizionario sono estese da Python 3.5 come spiegato 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]

Questo metodo non potrebbe essere applicabile al caso delle N liste, a meno che non si voglia scompattare ogni lista manualmente.

Attenzione

Il disimballaggio non può essere utilizzato per la comprensione, come dimostrato di seguito.

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

Conclusione

Versione Sul posto?
a + b - No
list(intertools.chain(a,b)) >=2.3 No
[*a, *b] >=3.5 No
a += b -
a.extend(b) -

Usiamo perfplot module per comapare le prestazioni dei metodi di cui sopra.

Confronto delle prestazioni dei metodi di concatenazione di Python List

Come mostrato nel grafico, i metodi a.extend(b) e a+b sono quasi gli stessi nelle prestazioni e il migliore tra tutti i metodi. Il metodo list(chain(a,b)) ha le peggiori prestazioni.

Articolo correlato - Python List

  • Ottieni l'ultimo elemento dell'lista in Python
  • Trova tutti gli indici di un elemento in una lista in Python