Combinar listas o unir elementos en Python: explicación y ejemplos
Este artículo cubre los siguientes temas sobre la combinación de listas en Python.
- Combinando elementos de listas con la función
join()
(a cadena, números) - Usando con separador en la función
join()
(comillas"
,'
, coma,
, espacio - Combinar listas en una
- Combinar listas sin duplicados
- Combinar por índice de lista (usando
map()
)
Principalmente, veremos cómo combinar elementos dentro de una lista y cómo combinar múltiples listas entre sí.
1. Combinar elementos de una lista a una cadena con join()
En Python, el método join
proporciona la capacidad de unir elementos de una lista usando cadenas.
Específicamente, une cada elemento de la lista en una sola cadena, separada por el delimitador especificado.
Para ilustrarlo con un ejemplo sencillo, supongamos que tenemos la siguiente lista:
fruits = ['apple', 'banana', 'orange']
Queremos combinar los elementos de esta lista en una sola cadena, separados por comas. Para ello, podemos utilizar el método join()
:
result = ', '.join(fruits)
print(result)
# Output: apple, banana, orange
Aquí, ', '
se utilizan como delimitadores, y el método join()
une los elementos de la lista fruits
en una sola cadena, separada por comas y espacios.
Ten en cuenta que para usar el método join
, todos los elementos de las listas a unir deben ser cadenas; de lo contrario, cada elemento debe ser convertido a cadena antes de usar el método.
2. Combinar listas de números
La forma de combinar los números de una lista depende del resultado que se desee obtener.
Si quieres combinar cada número en una sola cadena, puedes usar el método join()
.
Si quieres obtener la suma de cada número de la lista, puedes utilizar las funciones sum()
o reduce()
.
Veamos cada una de ellas.
2.1. Combinar en una cadena
Como vimos en la Sección 1, para usar el método join()
, necesitamos convertir cada elemento de la lista en una cadena.
En el siguiente ejemplo, utilizaremos la sintaxis del generador para convertir todos los elementos escalares en cadenas.
numbers = [1, 2, 3, 4, 5]
combined = ''.join(str(num) for num in numbers)
print(combined)
# Output: 12345
Usamos str(num)
para convertir cada elemento en una cadena, y luego los unimos con el método join()
para convertir los números en una sola cadena.
2.2. Encontrar la suma
Hay muchas formas de sumar los números de una lista. Veamos dos de las más comunes.
Primero, puedes simplemente sumarlos usando la función incorporada de Python sum()
.
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = sum(numbers)
print(sum_of_numbers)
# Output: 15
La segunda forma es escribir código de estilo funcional utilizando la función reduce()
.
La función reduce()
es proporcionada por el módulo functools
y ofrece la posibilidad de combinar repetidamente elementos de una lista para producir un único resultado.
Puedes utilizarla para combinar los números de una lista en un único número.
Veámoslo con un ejemplo.
from functools import reduce
numbers = [1, 2, 3, 4, 5]
reduce(lambda x,y: x + y, numbers)
print(combined)
# Output: 15
También puede escribir un nuevo algoritmo utilizando la función reduce()
de la siguiente forma
from functools import reduce
numbers = [1, 2, 3, 4, 5]
combined = reduce(lambda x, y: x * 10 + y, numbers)
print(combined)
# Output: 12345
Utilizamos la función lambda x, y: x * 10 + y
para combinar iterativamente los elementos en un único número.
Cada elemento se multiplica por 10 y luego se suma al siguiente elemento para crear el resultado 12345
.
3. Combinar listas dentro de listas
Hay muchas formas de combinar dos listas o listas dentro de una lista. He aquí algunas de ellas.
3.1. Usando el operador +
.
La forma más sencilla de combinar dos listas es utilizar el operador +
.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
Este método no modifica la lista original, sino que crea una nueva lista combinada.
3.2. Usando el método extend()
.
El método extend()
es una forma de añadir elementos de otra lista a una lista.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)
# Output: [1, 2, 3, 4, 5, 6]
El método extend()
permite añadir elementos de list2
a list1
. Este método modifica list1
y no crea una nueva lista.
3.3. Uso del operador de concatenación de listas
También puedes combinar dos listas utilizando el operador de concatenación de listas *
.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
Este método tampoco modifica la lista original, crea una nueva lista combinada.
4. Eliminar duplicados al combinar listas
También hay varias formas de eliminar duplicados al combinar dos listas. He aquí algunos ejemplos
4.1. Utilizar conjuntos
Los conjuntos se caracterizan por no permitir elementos duplicados. Puedes aprovecharte de ello convirtiendo dos listas en un conjunto y luego de nuevo en una lista para obtener una lista deduplicate.
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = list(set(list1 + list2))
print(combined)
# Output: [1, 2, 3, 4, 5, 6, 7, 8]
Primero combinamos list1
y list2
con el operador +
.
A continuación, utilizamos la función set()
para convertir las listas combinadas en un conjunto, que luego convertimos en una lista utilizando la función list()
.
De esta forma obtenemos una lista con los duplicados eliminados.
4.2. Cómo usar la compresión de listas
También puedes utilizar la compresión de listas para eliminar duplicados. Para ello, combinamos dos listas y añadimos una condición para filtrar los duplicados.
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = [x for x in list1 + list2 if x not in list1 or x not in list2]
print(combined)
# Output: [1, 2, 3, 6, 7, 8]
Después de combinar list1
y list2
con el operador +
,
Utiliza la compresión de listas para crear una lista en la que cada elemento contenga sólo aquellos elementos que no estén en list1
ni en list2
. Esto te dará una lista sin duplicados.
5. Combinar listas por índice
A continuación se explica cómo combinar dos o más listas utilizando la función map()
y la función zip
.
La función map()
toma múltiples listas y aplica una función para combinar los elementos de cada lista, dando como resultado una nueva lista.
La función zip()
agrupa los elementos con el mismo índice en una tupla.
Utilizadas conjuntamente, estas dos funciones producen resultados como el del ejemplo siguiente.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
combined = list(map(list, zip(list1, list2, list3)))
print(combined)
# Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip(lista1, lista2, lista3)
empaqueta los mismos elementos indexados de cada lista en una tuple.
map(lista, ...)
convierte estas tuplas en listas.
Así, la variable combinada
almacena las sublistas de lista1
, lista2{;py}
y lista3
con los mismos elementos indexados.
Conclusión
En este artículo, hemos respondido a muchas de tus preguntas sobre la combinación de listas en Python. Esperamos que te resulte útil cuando necesites combinar elementos de una lista, o cuando necesites combinar listas en sí mismas.
