Intersección de listas en Python

Muhammad Maisam Abbas 10 octubre 2023
  1. Obtener la intersección de listas en Python con el operador &
  2. Obtener la intersección de listas en Python con el método intersection()
Intersección de listas en Python

En este tutorial, discutiremos varios métodos para obtener la intersección entre dos listas en Python.

La intersección (o AND) es básicamente una operación diseñada específicamente para sets. Funciona seleccionando los elementos comunes en dos conjuntos. Por ejemplo,

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

print(setA & setB)

Producción :

{2, 4}

En el ejemplo anterior, setA y setB son dos conjuntos, y el operador & realiza la operación de intersección en los sets.

Por defecto, Python no permite realizar la intersección directa en las listas. Pero con un pequeño ajuste, podemos realizar la intersección en listas también.

Obtener la intersección de listas en Python con el operador &

El operador &, como se ha comentado anteriormente, no se puede utilizar con listas. Así que tenemos que cambiar nuestras listas a conjuntos usando el 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]

La función set() convierte una lista en un conjunto. La operación & devuelve un conjunto que contiene todos los elementos comunes de ambos conjuntos. Como sabemos, tenemos que realizar esta operación sobre listas y no sobre conjuntos. Así que tenemos que convertir este conjunto en una lista utilizando la función list().

Obtener la intersección de listas en Python con el método intersection()

El método intersection() de la clase set es otra forma de realizar la intersección de conjuntos en Python. Al igual que el operador &, también se limita a los conjuntos. Pero al convertir la list1 en un conjunto, también podemos utilizar intersection() con la 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]

El método intersection() también devuelve un conjunto con todos los elementos comunes. Así que tenemos que convertirlo en una lista utilizando la función list().

Obtener la intersección de listas en Python con las comprensiones de listas

Los dos métodos comentados anteriormente están diseñados para trabajar con conjuntos y no con listas. Como todos sabemos que un conjunto no puede tener valores recurrentes, y sus elementos no están ordenados, estas funciones no funcionan bien si tenemos valores recurrentes en nuestras listas o queremos conservar el orden en nuestras listas.

Los inconvenientes de los dos métodos anteriores se demuestran en este ejemplo de codificación.

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]

Como se muestra arriba, esperamos [2, 2, 4] como resultado correcto pero sólo obtenemos [2, 4].

La comprensión de lista es otra forma de realizar la operación AND sobre listas en Python. Puede manejar valores recurrentes y también mantener el orden de los elementos, que no se mantiene en los dos métodos anteriores.

# 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)

Producción :

[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

Artículo relacionado - Python List