Cómo realizar la sustracción de la lista en Python
-
Convertir la lista en
set
para realizar la substracción de la lista en Python - Usar la comprensión de la lista para obtener la diferencia de la lista en Python
Este tutorial demuestra cómo realizar la resta de la lista, o en otras palabras, la lista menos la lista en Python.
Tal y como se define en la teoría de conjuntos de las matemáticas, la diferencia de dos conjuntos se refiere a los elementos de un conjunto que no existen en el otro conjunto.
Por ejemplo, si declaramos estas dos listas:
list1 = [1, 2, 4]
list2 = [2, 3]
La diferencia de list1 - list2
sería [1, 4]
, mientras que list2 - list1
sería [3]
.
Convertir la lista en set
para realizar la substracción de la lista en Python
Las operaciones de la teoría de conjuntos están soportadas en Python. Sin embargo, sólo el tipo de datos set
soporta estas operaciones. Por lo tanto, para usar la operación set
, las listas tienen que ser convertidas en sets. Esto es posible envolviendo una lista alrededor de la función set()
.
Nota: La conversión de una lista a un conjunto eliminará cualquier tipo de orden y eliminará los valores duplicados de la 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}
El resultado da como resultado la diferencia entre los dos conjuntos y elimina los valores duplicados.
Podemos usar la función list()
para convertir el resultado de un set
a una 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]
Usar la comprensión de la lista para obtener la diferencia de la lista en Python
La comprensión de la lista puede utilizarse para comprobar si un elemento existe sólo en la primera lista pero no en la segunda. Esta solución permite realizar la operación de diferenciación sin convertir la lista en un conjunto.
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 solución no altera el orden de la lista y elimina los duplicados.
Sin embargo, el valor 11
se repite dos veces en la listA
, y ambas iteraciones de 11
se eliminan del resultado de A - B
ya que 11
existe en ambos conjuntos. Este comportamiento es el 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.
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