Intersección de listas en Python
-
Obtener la intersección de listas en Python con el operador
&
-
Obtener la intersección de listas en Python con el método
intersection()
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]
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.
LinkedInArtículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python