Python ofrece varias maneras de combinar listas, dependiendo de si se desean mantener las entradas duplicadas y si el orden importa. Esta guía explora varias técnicas para manejar eficientemente las uniones de listas.
Tabla de Contenido
- Unión con Elementos Duplicados
- Unión Ordenada
- Unión sin Elementos Duplicados
- Unión de Múltiples Listas
Unión con Elementos Duplicados
La manera más simple de combinar dos listas, preservando todos los elementos y sus repeticiones, es usando el operador +
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # Salida: [1, 2, 2, 3, 3, 4, 2]
Unión Ordenada
Para una unión ordenada, combine el operador +
con la función sorted()
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # Salida: [1, 2, 2, 2, 3, 3, 4]
Unión sin Elementos Duplicados
Para crear una unión sin duplicados, use conjuntos (sets):
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # o set(list1).union(list2)
union_list = list(union_set) # Convertir de vuelta a una lista si es necesario
print(union_list) # Salida: [1, 2, 3, 4] (el orden puede variar)
Los conjuntos eliminan automáticamente los duplicados. Note que el orden de los elementos en la lista resultante podría no ser el mismo que en las listas originales.
Unión de Múltiples Listas
Para más de dos listas, el enfoque de conjuntos permanece eficiente:
list1 = [1, 2, 3]
list2 = [3, 4, 5]
list3 = [5, 6, 1]
union_set = set(list1) | set(list2) | set(list3)
union_list = list(union_set)
print(union_list) # Salida: [1, 2, 3, 4, 5, 6] (el orden puede variar)
#Solución más escalable usando reduce:
from functools import reduce
union_list = list(reduce(lambda x,y: x | y, [set(l) for l in [list1, list2, list3]]))
print(union_list) # Salida: [1, 2, 3, 4, 5, 6] (el orden puede variar)
La función reduce
proporciona una solución más concisa y escalable para muchas listas. Recuerde que el orden de los elementos podría no ser preservado; use sorted()
si el orden es importante.