Python Programming

Dominando las Uniones de Listas en Python

Spread the love

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

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *