Dans Python vous pouvez utiliser a.intersection(b)
pour trouver les éléments communs aux deux ensembles.
Existe-t-il un moyen de faire la disjoint version opposée de cela? Éléments qui ne sont pas communs à la fois à a
et b
; les éléments uniques dans a
réunis avec les éléments uniques dans b
?
Vous recherchez la différence symétrique ; tous les éléments qui apparaissent uniquement dans l'ensemble a ou dans l'ensemble b, mais pas les deux:
a.symmetric_difference(b)
A partir de la documentation de la méthode set.symmetric_difference()
:
Renvoyer un nouvel ensemble avec des éléments dans l'ensemble ou autre mais pas les deux.
Vous pouvez également utiliser l'opérateur ^
, Si les deux a
et b
sont des ensembles:
a ^ b
tandis que set.symmetric_difference()
prend tout itérable pour l'argument autre .
La sortie est l'équivalent de (a | b) - (a & b)
, L'union des deux ensembles moins l'intersection des deux ensembles.
La meilleure façon est une compréhension de la liste.
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]
Vous pouvez rejoindre les deux listes
a={1,2,4,5,6}
b={5,6,4,9}
c=(a^b)&b
print(c) # you got {9}
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]
Cela fait le tour de la liste et renvoie la liste disjointe
Essayez ce code pour (set (a) - intersection (a & 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 sortie est [1,4,5,6]
J'espère que ça marchera