Cómo concatenar dos listas en Python

C

Introducción

Concatenación de listas el acto de crear una sola lista a partir de varias listas más pequeñas encadenándolas en cadena.

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

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

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

Concatenación de listas de operadores Plus

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

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

Desembalaje de la concatenación de la lista de operadores

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

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

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

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, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4]

Multiplicar la concatenación de listas de operadores

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

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

para la concatenación de listas de bucles

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 única lista con todos los elementos deseados:

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

itertools.chain () Lista de concatenación

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

# 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 en este sentido es lo que sucede:

# 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, necesitará importar itertools:

import itertools

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

extender () Lista de concatenación

Esta es una función incorporada que se puede usar para expandir una lista. Aquí estamos expandiendo la primera lista agregando elementos de la segunda lista:

list_a.extend(list_b)

print (list_a)
[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 desempaquetar, el operador multiplicar, un bucle for, itertools.chain() y extend().

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad