HOWTO · Python
Obtenha União de Listas em Python
A união de listas reflete que todos os elementos das diferentes listas serão colocados dentro de uma única lista.
Nesta página
Em Python, + concatena listas: os itens da segunda lista são colocados após os da primeira, e os valores repetidos são mantidos. Isso é diferente da união matemática de conjuntos, que mantém apenas uma ocorrência de cada valor distinto e não garante uma ordem. Use a concatenação quando a ordem e as repetições forem importantes, acrescente sorted() quando precisar de valores ordenados ou use set() quando precisar de valores distintos e hashable. Os exemplos abaixo são independentes e mostram os valores resultantes.
Combine Duas Listas com + e Mantenha os Elementos Repetidos
Use + para combinar duas listas preservando a ordem e todas as ocorrências. O resultado é uma nova lista, portanto as duas listas de entrada continuam disponíveis para uso posterior.
first = ["red", "blue"]
second = ["blue", "green"]
combined = first + second
print(combined)
['red', 'blue', 'blue', 'green']
A lista resultante contém os itens de first seguidos pelos de second; "blue" aparece duas vezes porque está nas duas listas de entrada. Isso é concatenação de listas, não uma união que mantém apenas valores únicos.
Ordene as Listas Combinadas
Primeiro concatene as listas e, em seguida, passe o resultado para a função integrada sorted() do Python. Ela retorna uma nova lista em ordem crescente e não altera as listas de entrada. A ordenação não remove elementos repetidos, então cada ocorrência permanece no resultado.
first = [11, 20, 1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
combined = first + second
sorted_combined = sorted(combined)
print(sorted_combined)
[1, 2, 2, 3, 4, 4, 5, 6, 8, 10, 11, 20]
Com números, os valores são ordenados numericamente. Os valores precisam ser comparáveis entre si; por exemplo, o Python não define uma ordem crescente geral entre inteiros e strings.
Combine Duas Listas e Remova os Elementos Repetidos
Converta a lista concatenada em um conjunto com set() e, se o restante do código precisar de uma lista, converta o conjunto de volta em lista. Um conjunto mantém uma ocorrência de cada valor distinto, mas a ordem de iteração não é garantida. Seus elementos precisam ser hashable; por isso, essa abordagem funciona com valores como números e strings, mas não com listas aninhadas.
first = [1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
unique_values = list(set(first + second))
print(unique_values)
[1, 2, 3, 4, 5, 6, 8, 10]
Use essa abordagem quando a presença de valores únicos for mais importante do que suas posições. Se os valores combinados também precisarem estar ordenados, ordene explicitamente a lista resultante com sorted().
Combine Mais de Duas Listas e Remova os Elementos Repetidos
Para várias listas de entrada, chame union() em um conjunto e passe cada lista como argumento. union() é um método de conjunto; aceita vários iteráveis e retorna um conjunto com cada valor hashable distinto. Converta o resultado em lista quando esse for o tipo de retorno necessário. Assim como no exemplo com duas listas, a ordem do resultado não é garantida.
first = [1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
third = [5, 6, 7, 8, 11, 15, 18]
unique_values = list(set().union(first, second, third))
print(unique_values)
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15, 18]
Para adicionar outra lista, passe-a como mais um argumento para union(). Se os valores não forem hashable, converta-os para uma representação hashable adequada ou use outra estratégia para remover repetições; conjuntos não podem conter diretamente listas ou dicionários mutáveis.