En este tutorial, descubriremos dos formas pitónicas de encontrar la diferencia entre dos listas. Uno de los métodos es utilizando el Conjunto de Python. Primero convierte las listas en conjuntos y luego obtiene la parte única de eso.
Otros métodos que no son conjuntos comparan dos listas elemento por elemento y recogen los únicos. Podemos implementarlos utilizando bucles for anidados y con la comprensión de listas.
Por cierto, si no conoces los conjuntos en Python, sigue el siguiente tutorial. Le presentará rápidamente cómo Python implementa la forma matemática de Set.
Python Set
Maneras pitónicas de encontrar la diferencia entre dos listas
Python Set parece ser la opción más obvia para identificar el común así como la diferencia de dos listas. Por lo tanto, vamos a explorarlo primero y luego utilizaremos bucles anidados y comprensión de listas.
Antes de pasar a la parte de la solución, vamos a definir los parámetros de la prueba, es decir, las dos listas cuya diferencia tenemos que encontrar.
# Test Inputlist_a = list_b =
Y queremos que nuestra solución proporcione la siguiente salida:
# Expected Result# list_out = list_a - list_blist_out =
Comencemos a crear un programa para encontrar la diferencia entre dos listas, primero utilizando conjuntos.
Utilizar set() para encontrar la diferencia de dos listas
En este enfoque, primero derivaremos dos SETs (digamos set1 y set2) a partir de las LISTAS (digamos list1 y list2) pasándolas a la función set(). Después, realizaremos la operación de diferencia de conjuntos. Devolverá aquellos elementos de la lista1 que no existan en la segunda.
Aquí tienes el programa de ejemplo de Python para obtener la diferencia de dos listas.
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Después de ejecutarlo, deberías ver el siguiente resultado:
Sin set(), usando bucles anidados
En este método, usaremos bucles For anidados para comparar cada elemento de la primera lista con la segunda. Y mientras se recorre, iremos anexando cada elemento no coincidente a una nueva (y vacía) lista.
La nueva lista incluiría finalmente la diferencia entre las dos secuencias dadas. A continuación se muestra el programa de ejemplo para demostrar este enfoque.
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Después de ejecutar el programa anterior, debería ver el siguiente resultado:
Sin set(), utilizando la comprensión de la lista
Es casi una técnica similar a la que utilizamos en el anterior. Aquí, hemos sustituido los bucles anidados por la sintaxis de comprensión de listas.
Vea el ejemplo de abajo.
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Después de ejecutar el programa anterior, debería ver el siguiente resultado: