Python Programming

Dominando União de Listas em Python

Spread the love

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

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *