Cómo concatenar dos o múltiples listas en Python
-
+
para concatenar dos listas en Python -
+=
para concatenar dos listas en el lugar en Python -
El método
itertools.chain
concatena dos listas en Python -
extend()
método para concatenar listas en Python -
Método de desempaquetado
a, b
en la concatenación de listas en Python - Conclusión

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]
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.
>>> 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 |
- | Sí |
a.extend(b) |
- | Sí |
Utilizamos el módulo perfplot
para comapare el rendimiento de los métodos anteriores.
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.
Artículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python