Programa Python para calcular la diferencia simétrica entre dos listas
En Python, se pueden mantener varios elementos en una sola variable mediante el uso de listas. Uno de los cuatro tipos de datos integrados en Python para almacenar colecciones de datos es la lista; los otros tres son la tupla, el conjunto y el diccionario, cada uno de los cuales tiene un propósito único.
¿Qué es la lista?
Los corchetes se utilizan para crear listas. La herramienta más efectiva en Python son las listas porque no necesariamente tienen que ser homogéneas. Los tipos de datos como enteros, cadenas y objetos se pueden encontrar en una lista. Debido a que las listas son mutables, se pueden realizar cambios en ellas incluso después de haberlas creado.
Diferencia simétrica en una lista
El conjunto de elementos que están en LISTA1 o LISTA2 pero no en ambas constituye la diferencia simétrica entre las dos listas LISTA1 y LISTA2.
Hay varias formas de calcular la diferencia simétrica entre dos listas en Python, haremos las formas más eficientes de encontrar las mismas.
Hemos convertido la lista en conjuntos y luego hemos hecho la diferencia simétrica entre esos conjuntos.
Algoritmo
-
Crear listas
Convertir listas para configurar
Imprime la diferencia simétrica del conjunto convertido.
Imprime la diferencia simétrica de la lista.
Ejemplo
En el siguiente programa usando “in” podemos encontrar la diferencia entre las dos listas. La palabra clave in cumple dos funciones.
Para determinar si un valor está presente en una cadena, lista, tupla, rango, etc.
Para recorrer repetidamente una lista en un bucle for.
L_1 = [11, 12, 13]
L_2 = [12, 13, 42]
L_3 = [3, 42, 5]
# converting lists to set
set_1 = set(L_1)
set_2 = set(L_2)
# now print the symmetric difference when
# when the converted set is passed as a parameter
print(set_1.symmetric_difference(set_2))
# now print the symmetric difference when list is
# passed as a parameter by converting it to a set
print(set_2.symmetric_difference(L_3))
Producción
{42, 11}
{13, 3, 12, 5}
Ejemplo
Aquí, hicimos dos listas y luego creamos una variable temporal vacía. Luego hemos usado el bucle for para recorrer los números de la lista. La declaración If verifica si los números son comunes y luego los elementos se agregan a la primera variable temporal creada. Luego se imprime la lista con los diferentes elementos.
list_1 = [1, 35, 20, 25, 70, 35, 80]
list_2 = [25, 80, 35]
temp_3 = []
for element in list_1:
if element not in list_2:
temp_3.append(element)
print(temp_3)
Producción
[1, 20, 70]
Usar la comprensión de listas
En este enfoque, convertimos explícitamente las listas en conjuntos y luego usamos el operador de resta para eliminar solo una de la otra. Vaya a Conjuntos en Python para ver otras referencias de conjuntos. Es una estrategia similar a la que empleamos anteriormente. La sintaxis de comprensión de listas se ha utilizado en lugar de los bucles anidados como única diferencia.
Ejemplo
El siguiente programa compara dos listas, lista_1 y lista_2. Crea un conjunto a partir de la segunda lista y luego lo usa para filtrar los valores que aparecen en ambas listas. El resultado es una nueva lista filtrada (temp_3) que contiene solo los elementos de list_1 que no están presentes en SET_1 (list_2).
list_1 = [13, 15, 22, 25, 30, 54, 40]
list_2 = [54, 45, 30, 13]
SET_1 = set(list_2)
temp_3 = [x for x in list_1 if x not in SET_1]
print(temp_3)
Producción
[15, 22, 25, 40]
Sin el uso de set()
En este método, los elementos se copian de ambas listas utilizando la técnica de combinación fundamental mientras se verifican periódicamente para ver si están presentes en la otra lista.
Ejemplo
En el siguiente programa, definimos una función llamada Diferencia que toma dos listas como parámetros. La función crea una nueva lista, list_dif, que contiene los elementos de ambas listas originales que no están presentes en ninguna de ellas. Luego imprime esta nueva lista con la diferencia entre las dos listas originales. En este ejemplo, imprime [1, 12, 25, 22, 30, 20].
# this method helps to get difference of two lists
# by not using set()
def Difference(list1, list2):
list_dif = [i for i in list_1 + list_2 if i not in list_1 or i not in list_2]
return list_dif
list_1 = [1, 12, 25, 22, 30, 65, 70]
list_2 = [65, 20, 70]
list_3 = Difference(list_1, list_2)
print(list_3)
Producción
[1, 12, 25, 22, 30, 20]
Usando diferencia simétrica
El método simétrico diferencia() devuelve los elementos que están en el primer conjunto o en el segundo conjunto. Este método no devuelve la intersección, a diferencia de los elementos compartidos de los dos conjuntos.
Ejemplo
list_1 = [23, 18, 45, 25, 40, 23, 40]
list_2 = [23, 40, 35]
set_difference = set(list_1).symmetric_difference(set(list_2))
temp_3 = list(set_difference)
print(temp_3)
Producción
[35, 45, 18, 25]
Conclusión
En este artículo, hemos utilizado cuatro formas diferentes de calcular la diferencia simétrica entre dos listas mediante Python. Cada método conlleva cierta singularidad y una forma diferente de manejar la tarea.