Cómo concatenar dos listas en Python

En este tutorial, repasaremos varias formas de concatenar varias listas en Python. Repasaremos el operador más, el operador de multiplicación, el ciclo for, itertools.chain() y extend().

Introducción

Concatenación de listas el acto de crear una sola lista a partir de múltiples listas más pequeñas al conectarlas en cadena.

Hay muchas formas de concatenar listas en Python. Específicamente, en este artículo, repasaremos cómo concatenar dos listas en Python usando el operador más, el operador desempaquetar, el operador multiplicar, la concatenación manual for loop, la función itertools.chain() y el método de lista incorporado extender().

En todos los fragmentos de código a continuación, haremos uso de las siguientes listas:

1
2
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]

Más concatenación de lista de operadores

La forma más sencilla y directa de concatenar dos listas en Python es el operador más (+):

1
2
list_c  = list_a + list_b
print (list_c)
1
[1, 2, 3, 4, 5, 6, 7, 8]

Desempaquetar la concatenación de la lista de operadores

Este método le permite unirse a múltiples listas. Es una característica bastante nueva y solo está disponible desde Python 3.6+. El operador de desempaquetado, como su nombre lo indica, desempaqueta un objeto ‘iterable’ en sus elementos. El desempaquetado es útil cuando queremos generar una gran cantidad de argumentos a partir de una sola lista. Por ejemplo:

1
2
3
4
5
6
7
8
def foo(a, b, c, d):
    return a + b + c + d

# We want to use the arguments of the following list with the foo function.
# However, foo doesn't take a list, it takes 4 numbers, which is why we need to
# unpack the list.
foo(*list_a)
# This is the same as if we were to call foo(1,2,3,4)
1
10

En pocas palabras, usamos el constructor de listas ([a,b..]) y generamos los elementos de la nueva lista en orden desempaquetando varias listas una tras otra:

1
2
3
4
list_c  = [*list_a, *list_b, *list_a]
# This is the same as:
# list_c  = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]
print (list_c)
1
[1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]

Multiplicar concatenación de lista de operadores

El operador de multiplicación (*) es un caso especial de concatenación de listas en Python. Se usa para repetir una lista completa varias veces (por eso se denota con un operador de multiplicación):

1
print(list_a * 2)
1
[1, 2, 3, 4, 1, 2, 3, 4]

for loop Concatenación de listas

En este método, revisaremos una lista mientras agregamos cada uno de sus elementos a otra lista uno por uno. Cuando termine el ciclo, tendrá una sola lista con todos los elementos deseados:

1
2
3
for i in list_b:
    list_a.append(i)
print (list_a)
1
[1, 2, 3, 4, 5, 6, 7, 8]

itertools.chain() Concatenación de listas

Este método funciona con iterables. Construye y devuelve un iterador que luego se puede usar para construir la lista encadenada (piense en ello como una flecha que simplemente memoriza el orden de los elementos en la lista resultante):

1
2
3
4
5
# If we were to call itertools.chain() like so
iterator = itertools.chain([1, 2], [3, 4])

# Basically the iterator is an arrow which can give us the next() element in a sequence, so if we call a list() constructor with said iterable, it works like this:
list(iterator)

Debajo del capó, algo similar a esto es lo que sucede:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Iterator: The next element in this list is 1 
[1, 2], [3, 4]
 ^
# Iterator: The next element in this list is 2
[1, 2], [3, 4]
    ^
# Iterator: The next element in this list is 3 
[1, 2], [3, 4]
         ^
# Iterator: The next element in this list is 4 
[1, 2], [3, 4]
            ^
# So the list() call looks something like:
list([1,2,3,4])

# Keep in mind this is all pseudocode, Python doesn't give the developer direct control over the iterator

Para este método, deberá importar itertools:

1
2
3
4
import itertools

list_c  = list(itertools.chain(list_a, list_b))
print (list_c)
1
[1, 2, 3, 4, 5, 6, 7, 8]

extend() Concatenación de listas

Esta es una función incorporada que se puede usar para expandir una lista. Aquí estamos ampliando la primera lista añadiéndole elementos de la segunda lista:

1
2
3
list_a.extend(list_b)

print (list_a)
1
[1, 2, 3, 4, 5, 6, 7, 8]

Conclusión

En este artículo, hemos repasado cinco formas de concatenar dos listas en Python: usando el operador más, el operador de desempaquetar, el operador de multiplicación, un bucle for, itertools.chain() y extend().

Licensed under CC BY-NC-SA 4.0