Listar interseção em Python

Muhammad Maisam Abbas 10 outubro 2023
  1. Obtenha a interseção de lista em Python com o operador &
  2. Obtenha a interseção de lista em Python com o método intersection()
Listar interseção em Python

Neste tutorial, discutiremos vários métodos para obter a interseção entre duas listas em Python.

A interseção (ou AND) é basicamente uma operação projetada especificamente para sets. Funciona selecionando os elementos comuns em dois conjuntos. Por exemplo,

setA = {1, 2, 3, 4, 5}
setB = {0, 2, 4, 6}

print(setA & setB)

Resultado:

{2, 4}

No exemplo acima, setA e setB são dois conjuntos e o operador & realiza a operação de interseção nos conjuntos.

Por padrão, o Python não oferece suporte para a realização de interseção direta nas listas. Mas com um pequeno ajuste, podemos realizar a interseção nas listas também.

Obtenha a interseção de lista em Python com o operador &

O operador &, conforme discutido acima, não pode ser usado com listas. Então, temos que mudar nossas listas para conjuntos usando o método set().

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set1 & set2
list3 = list(set3)

print(list3)

Resultado:

[2, 4]

A função set() converte uma lista em um conjunto. A operação & retorna um conjunto que contém todos os elementos comuns em ambos os conjuntos. Como sabemos, temos que realizar esta operação em listas e não em conjuntos. Portanto, temos que converter este conjunto em uma lista usando a função list().

Obtenha a interseção de lista em Python com o método intersection()

O método intersection() da classe set é outra maneira de realizar a interseção em conjuntos em Python. Semelhante ao operador &, também está limitado a apenas conjuntos. Mas, ao converter list1 em um conjunto, também podemos usar intersection() com list1.

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set(list1).intersection(list2)
list3 = list(set3)

print(list3)

Resultado:

[2, 4]

O método intersection() também retorna um conjunto de todos os elementos comuns. Portanto, temos que convertê-lo em uma lista usando a função list().

Obtenha a interseção de lista em Python com as abrangências de lista

Ambos os métodos discutidos acima são projetados para funcionar com conjuntos em vez de listas. Como todos sabemos que um conjunto não pode ter valores recorrentes e seus elementos não são classificados, essas funções não funcionam bem se tivermos valores recorrentes em nossas listas ou se quisermos manter a ordem em nossas listas.

As desvantagens dos dois métodos anteriores são demonstradas neste exemplo de codificação.

list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]

setintersection = list(set(list1) & set(list2))
intersectionmethod = list(set(list1).intersection(list2))

print("The result of set intersection :")
print(setintersection)
print("The result of intersection() method :")
print(intersectionmethod)

Resultado:

The result of set intersection :
[2, 4]
The result of intersection() method :
[2, 4]

Conforme mostrado acima, esperamos [2, 2, 4] como o resultado correto, mas apenas obteremos [2, 4].

A compreensão de lista é outra maneira de realizar a operação AND em listas em Python. Ele pode lidar com valores recorrentes e também manter a ordem dos elementos, o que não é mantido nos dois métodos acima.

# Solution 2 Using list comprehensions
list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]
list3 = [x for x in list1 if x in list2]
# all the x values that are in A, if the X value is in B
print(list3)

Resultado:

[2, 2, 4]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Python List