W3docs

Cómo unir listas en Python

Aprende todas las formas de unir o combinar listas en Python: el operador +, extend(), desempaquetado, itertools.chain y cómo str.join() convierte una lista en cadena.

Python ofrece varias formas de combinar listas y de convertir una lista de cadenas en una sola cadena. Esta página cubre ambas tareas con claridad:

  • Unir listas — fusionar dos o más listas en una nueva lista (usando +, extend(), desempaquetado o itertools.chain).
  • Unir elementos de una lista en una cadena — usando el método str.join(), que concatena los elementos de una lista en una cadena delimitada.

Comprender la diferencia entre estas dos operaciones evita una fuente común de confusión para los principiantes.

Unir dos listas en una

Usando el operador +

La forma más sencilla de fusionar dos listas es el operador +. Devuelve una lista nueva que contiene todos los elementos de ambos operandos sin modificar los originales.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)

Salida:

[1, 2, 3, 4, 5, 6]

Puedes encadenar + para fusionar más de dos listas en una expresión: a + b + c.

Usando el método extend()

extend() añade todos los elementos de una lista al final de otra en el lugar. A diferencia de +, modifica la lista original y no crea una nueva.

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

Salida:

[1, 2, 3, 4, 5, 6]

Usa extend() cuando no necesites conservar list1 original intacta y quieras evitar crear una copia adicional en memoria.

extend() vs append(): append() añade su argumento como un único elemento, por lo que list1.append(list2) produce [1, 2, 3, [4, 5, 6]] — una lista anidada, no una fusionada. Usa siempre extend() cuando quieras aplanar la segunda lista dentro de la primera.

Usando desempaquetado (operador *)

Python 3.5 y versiones posteriores permiten la sintaxis de desempaquetado con asterisco dentro de un literal de lista. Es concisa y funciona con cualquier número de iterables en una sola expresión.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)

Salida:

[1, 2, 3, 4, 5, 6]

También puedes insertar elementos adicionales en línea: [0, *list1, *list2, 7].

Usando itertools.chain()

itertools.chain() de la biblioteca estándar une cualquier número de iterables de forma perezosa — no se crea ninguna lista intermedia hasta que se solicitan los valores. Esta es la opción más eficiente en memoria cuando se procesan secuencias grandes.

import itertools

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list(itertools.chain(list1, list2))
print(combined)

Salida:

[1, 2, 3, 4, 5, 6]

Pasa itertools.chain(*nested) para aplanar una lista de listas en una sola llamada.

Unir elementos de una lista en una cadena con str.join()

str.join() es un método de string — se llama sobre la cadena delimitadora y toma un iterable como argumento. Devuelve una sola cadena con todos los elementos concatenados, separados por el delimitador.

delimiter.join(iterable)

Ejemplo básico

python— editable, runs on the server

Salida:

apple, banana, cherry

Pasa una cadena vacía '' como delimitador para concatenar sin ningún separador.

Delimitadores comunes

DelimitadorExpresiónResultado
Coma-espacio', '.join(['a', 'b', 'c'])a, b, c
Espacio' '.join(['Python', 'is', 'great'])Python is great
Guion'-'.join(['2024', '01', '15'])2024-01-15
Salto de línea'\n'.join(['line one', 'line two'])bloque multilínea
Sin separador''.join(['H', 'i', '!'])Hi!

Unir una lista de números

str.join() requiere que cada elemento sea una cadena. Pasar enteros directamente genera un TypeError. Conviértelos primero con map(str, ...) o una expresión generadora.

nums = [10, 20, 30]
result = ', '.join(map(str, nums))
print(result)

Salida:

10, 20, 30

Usar una expresión generadora logra el mismo resultado y permite formatear cada número sobre la marcha:

python— editable, runs on the server

Salida:

12345

Construir cadenas multilínea

'\n'.join() es la forma idiomática de construir una cadena multilínea a partir de una lista de líneas sin saltos de línea al final.

lines = ['line one', 'line two', 'line three']
block = '\n'.join(lines)
print(block)

Salida:

line one
line two
line three

Elegir el enfoque adecuado

ObjetivoMejor método
Fusionar dos listas en una nueva listaoperador +
Añadir todos los elementos de una lista a otraextend()
Combinar múltiples iterables sin copia adicionalitertools.chain()
Combinar dentro de un literal o con elementos extradesempaquetado [*a, *b]
Convertir una lista de cadenas en una cadena delimitadastr.join()
Convertir una lista de números en una cadenastr.join(map(str, lst))

Temas relacionados

Práctica

Práctica
Which of the following ways can be used to join two lists in Python?
Which of the following ways can be used to join two lists in Python?
Was this page helpful?