Cómo concatenar dos o múltiples listas en Python

Aditya Raj 30 enero 2023
  1. + para concatenar dos listas en Python
  2. += para concatenar dos listas en el lugar en Python
  3. El método itertools.chain concatena dos listas en Python
  4. extend() método para concatenar listas en Python
  5. Método de desempaquetado a, b en la concatenación de listas en Python
  6. Conclusión
Cómo concatenar dos o múltiples listas en Python

Una lista en Python es una estructura de datos que contiene una colección ordenada de elementos.

Una operación para pegar dos listas se llama concentración. Se pueden concatenar dos listas en Python ya sea in-place o out-of-place.

Supongamos que tenemos dos listas para ser concatenadas,

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

Podríamos tener múltiples métodos para concatenarlas, pero difieren en el rendimiento cuando la longitud aumenta o el número de listas concatenadas aumenta.

Presentaremos estos diferentes métodos y le daremos la comparación de rendimiento.

+ para concatenar dos listas en Python

El operador + podría concatenar dos listas y devolver una nueva lista.

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

+= para concatenar dos listas en el lugar en Python

+= es similar al método anterior, pero cambiará los datos de la primera lista en su lugar.

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

El método itertools.chain concatena dos listas en Python

chain del módulo itertools trata las secuencias consecutivas como una sola secuencia,

>>> 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]
Información
itertools.chain tiene un constructor alternativo - intertools.chain.from_iterable(). Tiene un único argumento iterable cuyas entradas se evalúan perezosamente.

extend() método para concatenar listas en Python

El método list extend extiende la lista añadiendo elementos del iterable.

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

También cambia los datos de la lista existente en lugar de devolver una nueva lista.

Método de desempaquetado a, b en la concatenación de listas en Python

Desembalajes adicionales como * para el operador de desembalaje iterable y ** para el operador de desembalaje de diccionario se extienden desde Python 3.5 como se explica en PEP-0448.

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

Este método no puede aplicarse al caso de N listas a menos que quiera desempaquetar cada lista manualmente.

Advertencia
El desembalaje iterativo no puede ser utilizado en la comprensión, como se demuestra a continuació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

Conclusión

Versión ¿En el lugar?
a + b - No
list(intertools.chain(a,b)) >=2.3 No
[*a, *b] >=3.5 No
a += b -
a.extend(b) -

Utilizamos el módulo perfplot para comapare el rendimiento de los métodos anteriores.

Comparación del rendimiento de los métodos de concatenación de listas en Python

Como se muestra en el gráfico, los métodos a.extend(b) y a+b son casi iguales en cuanto al rendimiento y los mejores entre todos los métodos. El método list(chain(a,b)) tiene el peor rendimiento.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - Python List