Cómo realizar la sustracción de la lista en Python

Rayven Esplanada 10 octubre 2023
  1. Convertir la lista en set para realizar la substracción de la lista en Python
  2. Usar la comprensión de la lista para obtener la diferencia de la lista en Python
Cómo realizar la sustracción 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.

Rayven Esplanada avatar Rayven Esplanada avatar

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

Artículo relacionado - Python List