Python
Tipos de datos contenedor
list
unir, combinar

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.

copyright for Combinar listas o unir elementos en Python: explicación y ejemplos

© 2023 All rights reserved.