Neste tutorial, vamos descobrir duas maneiras Python para encontrar a diferença entre duas listas. Um dos métodos é usar o Python Set. Primeiro converte as listas em conjuntos e depois retira a parte única disso.
Outros métodos não conjuntos comparam duas listas elemento por elemento e coletam as únicas. Podemos implementá-los usando nested para loops e com a compreensão da lista.
Por sinal, se você não está ciente dos conjuntos em Python, então siga o tutorial abaixo. Ele irá rapidamente introduzir-lhe como Python implementa a forma matemática do Set.
Python Set
Python Ways to Find the Difference Between Two Lists
Python Set parece ser a escolha mais óbvia para identificar o comum, bem como a diferença de duas listas. Então, vamos explorá-lo primeiro e depois usaremos loops aninhados e compreensão de listas.
Antes de passarmos à parte da solução, vamos definir os parâmetros de teste, ou seja as duas listas que temos de encontrar a diferença.
# Test Inputlist_a = list_b =
E queremos que a nossa solução forneça a seguinte saída:
# Expected Result# list_out = list_a - list_blist_out =
Deixamos começar a criar um programa para encontrar a diferença entre duas listas, primeiro usando sets.
Utilizar set() para encontrar a diferença entre duas listas
A partir desta abordagem, vamos primeiro derivar dois SETs (digamos set1 e set2) da função LISTs (digamos list1 e list2), passando-os para set(). Depois disso, vamos realizar a operação set difference. Ele retornará aqueles elementos da lista1 que não existem na segunda.
Aqui está o programa Python de exemplo para obter a diferença de duas listas.
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Após executar isto, você deve ver o seguinte resultado:
Sem set(), usando loops aninhados
Neste método, usaremos nested For Loop para comparar cada elemento da primeira lista com a segunda. E enquanto atravessamos, vamos anexar cada item não correspondente a uma nova (e vazia) lista.
A nova lista finalmente incluiria a diferença entre as duas sequências dadas. Abaixo está o programa modelo para demonstrar esta abordagem.
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Após executar o programa acima, você deve ver o seguinte resultado:
Without set(), usando a compreensão da lista
É quase uma técnica similar à que usamos na anterior. Aqui, substituímos os loops aninhados pela sintaxe de compreensão de lista.
Veja o exemplo abaixo.
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Após executar o programa acima, você deve ver o seguinte resultado: