[ad_1]
Digamos que você tenha uma lista que contenha números duplicados:
numbers = [1, 1, 2, 3, 3, 4]
Mas você quer uma lista de único números.
unique_numbers = [1, 2, 3, 4]
Existem algumas maneiras de obter uma lista de valores exclusivos em Python. Este artigo mostrará como.
Usando um set
uma maneira de fazer isso. Um conjunto é útil porque contém elementos exclusivos.
Você pode usar um conjunto para obter os elementos exclusivos. Em seguida, transforme o conjunto em uma lista.
Vejamos duas abordagens que usam um conjunto e uma lista. A primeira abordagem é detalhada, mas é útil ver o que está acontecendo a cada etapa do caminho.
numbers = [1, 2, 2, 3, 3, 4, 5]def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbersprint(get_unique_numbers(numbers))# result: [1, 2, 3, 4, 5]
Vamos dar uma olhada mais de perto no que está acontecendo. Recebo uma lista de números, numbers
. Eu passo esta lista para a função, get_unique_numbers
.
Dentro da função, crio uma lista vazia, que acabará por conter todos os números exclusivos. Então, eu uso um set
para obter os números únicos do numbers
Lista.
unique_numbers = set(numbers)
Tenho o que preciso: os números únicos. Agora preciso colocar esses valores em uma lista. Para fazer isso, eu uso um loop for para iterar cada número no conjunto.
for number in unique_numbers: list_of_unique_numbers.append(number)
Em cada iteração, adiciono o número atual à lista, list_of_unique_numbers
. Finalmente, eu devolvo esta lista no final do programa.
Existe uma maneira mais rápida de usar um conjunto e uma lista para obter valores exclusivos em Python. É isso que abordaremos a seguir.
Uma abordagem mais curta com conjunto
Todo o código escrito no exemplo acima pode ser condensado em uma linha com a ajuda das funções integradas do Python.
numbers = [1, 2, 2, 3, 3, 4, 5]unique_numbers = list(set(numbers))print(unique_numbers)# Result: [1, 2, 3, 4, 5]
Embora esse código pareça muito diferente do primeiro exemplo, a ideia é a mesma. Use um conjunto para obter os números exclusivos. Em seguida, transforme o conjunto em uma lista.
unique_numbers = list(set(numbers))
É útil pensar “de dentro para fora” ao ler o código acima. O código mais interno é avaliado primeiro: set(numbers)
. Então, o código mais externo é avaliado: list(set(numbers))
.
A iteração é outra abordagem a ser considerada.
A ideia principal é criar uma lista vazia que contenha números únicos. Em seguida, use um loop for iterate sobre cada número na lista fornecida. Se o número já estiver na lista exclusiva, prossiga para a próxima iteração. Caso contrário, adicione o número a ele.
Vejamos duas maneiras de usar a iteração para obter os valores exclusivos em uma lista, começando com o mais detalhado.
numbers = [20, 20, 30, 30, 40]def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return uniqueprint(get_unique_numbers(numbers))# Result: [20, 30, 40]
Aqui está o que está acontecendo em cada etapa do caminho. Primeiro, recebo uma lista de números, numbers
. Eu passo essa lista para minha função, get_unique_numbers
.
Dentro da função, crio uma lista vazia, unique
. Eventualmente, essa lista conterá todos os números exclusivos.
Eu uso um loop for para iterar cada número no numbers
Lista.
for number in numbers: if number in unique: continue else: unique.append(number)
A condicional dentro do loop verifica se o número da iteração atual está no unique
Lista. Nesse caso, o loop continua para a próxima iteração. Caso contrário, o número será adicionado a esta lista.
Aqui está o ponto importante: apenas os números exclusivos são adicionados. Assim que o loop for concluído, eu volto unique
que contém todos os números exclusivos.
Uma abordagem mais curta com iteração
Existe outra maneira de escrever a função em menos linhas.
numbers = [20, 20, 30, 30, 40]def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique#Result: [20, 30, 40]
A diferença é o condicional. Desta vez, está configurado para ler assim: se o número não estiver unique
e, em seguida, adicione-o.
if number not in unique: unique.append(number)
Caso contrário, o loop se moverá para o próximo número na lista, numbers
.
O resultado é o mesmo. No entanto, às vezes é mais difícil pensar e ler o código quando o booleano é negado.
Existem outras maneiras de encontrar valores únicos em uma lista Python. Mas provavelmente você se pegará usando uma das abordagens abordadas neste artigo.
Escrevo sobre como aprender a programar e as melhores maneiras de fazer isso amymhaddad.com. Siga me no twitter: @amymhaddad.
[ad_2]
Fonte