Python oferece diversas maneiras de combinar listas, dependendo se você quer manter entradas duplicadas e se a ordem importa. Este guia explora várias técnicas para lidar eficientemente com uniões de listas.
Sumário
- União com Elementos Duplicados
- União Ordenada
- União sem Elementos Duplicados
- União de Múltiplas Listas
União com Elementos Duplicados
A maneira mais simples de combinar duas listas, preservando todos os elementos e suas repetições, é usar o operador +
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # Saída: [1, 2, 2, 3, 3, 4, 2]
União Ordenada
Para uma união ordenada, combine o operador +
com a função sorted()
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # Saída: [1, 2, 2, 2, 3, 3, 4]
União sem Elementos Duplicados
Para criar uma união sem duplicatas, use conjuntos (sets):
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # ou set(list1).union(list2)
union_list = list(union_set) # Converta de volta para uma lista se necessário
print(union_list) # Saída: [1, 2, 3, 4] (a ordem pode variar)
Conjuntos removem automaticamente duplicatas. Note que a ordem dos elementos na lista resultante pode não ser a mesma das listas originais.
União de Múltiplas Listas
Para mais de duas listas, a abordagem 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) # Saída: [1, 2, 3, 4, 5, 6] (a ordem pode variar)
# Solução mais escalável 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) # Saída: [1, 2, 3, 4, 5, 6] (a ordem pode variar)
A função reduce
fornece uma solução mais concisa e escalável para muitas listas. Lembre-se que a ordem dos elementos pode não ser preservada; use sorted()
se a ordem for importante.