Lista única de Python – como obter todos os valores exclusivos em uma lista ou matriz

Lista única de Python – como obter todos os valores exclusivos em uma lista ou matriz

17 de August, 2020 0 By António César de Andrade
Click to rate this post!
[Total: 0 Average: 0]


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_numbers


print(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 unique


print(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 uniquee, 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.





Fonte