Subtracção de Lista em Python
-
Converter lista para
set
para executar subtracção de lista em Python - Utilizar a compreensão da lista para obter a diferença da lista em Python
Este tutorial demonstra como executar a subtracção de lista, ou por outras palavras, lista menos lista em Python.
Como definido pela teoria do array em matemática, a diferença de dois conjuntos refere-se aos elementos de um array que não existem no outro array.
Por exemplo, se declararmos estas duas listas:
list1 = [1, 2, 4]
list2 = [2, 3]
A diferença de list1 - list2
seria [1, 4]
, enquanto list2 - list1
seria [3]
.
Converter lista para set
para executar subtracção de lista em Python
As operações teóricas de conjuntos são suportadas em Python. No entanto, apenas o tipo de dados set
suporta estas operações. Portanto, para utilizar a operação set
, as listas têm de ser convertidas em conjuntos. Isto é possível enrolando uma lista em torno da função set()
.
Nota: A conversão de uma lista em conjunto irá remover qualquer tipo de ordem e remover valores duplicados da lista.
listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)
print("A - B = ", setA - setB)
Resultado:
A - B = {1, 4, 9, 14}
O resultado produz a diferença entre os dois conjuntos e remove os valores duplicados.
Podemos utilizar a função list()
para converter o resultado de um set
para uma lista.
listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)
list_diff = list(setA - setB)
print("A - B: ", list_diff)
Resultado:
A - B: [1, 4, 9, 14]
Utilizar a compreensão da lista para obter a diferença da lista em Python
A compreensão da lista pode ser utilizada para verificar se um elemento só existe na primeira lista mas não existe na segunda lista. Esta solução permite realizar a operação de diferença sem converter a lista num array.
listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
listSub = [elem for elem in listA if elem not in listB]
print("A - B =", listSub)
Resultado:
A - B = [1, 4, 9, 14, 14]
Esta solução não interfere com a ordem da lista e elimina as duplicações.
Contudo, o valor 11
é repetido duas vezes em listA
, e ambas as iterações de 11
são removidas do resultado de A - B
, uma vez que 11
existe em ambos os conjuntos. Este comportamento é o esperado.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn