¿Opuesto a set.intersection en python?

En Python puede usar a.intersection(b) para encontrar los elementos comunes a ambos conjuntos.

¿Hay una manera de hacer la versión opuesta desunida de esto? Artículos que no son comunes tanto a como a b ; los elementos únicos en a sindicado con los elementos únicos en b ?

Estás buscando la diferencia simétrica ; todos los elementos que aparecen solo en el conjunto a o en el conjunto b, pero no ambos:

 a.symmetric_difference(b) 

De la documentación del método set.symmetric_difference() :

Devuelve un nuevo conjunto con elementos en el conjunto o en otro pero no en ambos.

También puede usar el operador ^ , si a y b son conjuntos:

 a ^ b 

mientras que set.symmetric_difference() toma cualquier iterable para el otro argumento.

La salida es el equivalente de (a | b) - (a & b) , la unión de ambos conjuntos menos la intersección de ambos conjuntos.

 a={1,2,4,5,6} b={5,6,4,9} c=(a^b)&b print(c) # you got {9} 

La mejor manera es una lista de comprensión.

 a = [ 1,2,3,4] b = [ 8,7,9,2,1] c = [ element for element in a if element not in b] d = [ element for element in b if element not in a] print(c) # output is [ 3,4] print(d) # output is [8,7,9] 

Puedes unirte a ambas listas.

Pruebe este código para (set (a) – intersección (a y b))

 a = [1,2,3,4,5,6] b = [2,3] for i in b: if i in a: a.remove(i) print(a) 

La salida es [1,4,5,6] Espero que funcione.

e, f son dos listas que desea revisar disjoint

 a = [1,2,3,4] b = [8,7,9,2,1] c = [] def loop_to_check(e,f): for i in range(len(e)): if e[i] not in f: c.append(e[i]) loop_to_check(a,b) loop_to_check(b,a) print(c) ## output is [3,4,8,7,9] 

Esto recorre la lista y devuelve la lista disjoint