在巨蟒的十字路口的反面?

在 Python 中,您可以使用 a.intersection(b)来查找两个集合的公共项。

有没有办法做 分离相反的版本呢?不同于 ab的项目; a中的独特项目与 b中的独特项目相结合?

93312 次浏览

You are looking for the symmetric difference; all elements that appear only in set a or in set b, but not both:

a.symmetric_difference(b)

From the set.symmetric_difference() method documentation:

Return a new set with elements in either the set or other but not both.

You can use the ^ operator too, if both a and b are sets:

a ^ b

while set.symmetric_difference() takes any iterable for the other argument.

The output is the equivalent of (a | b) - (a & b), the union of both sets minus the intersection of both sets.

Try this code for (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)

the output is [1,4,5,6] I hope, it will work

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

e, f are two list you want to check 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]

This loops around to list and returns the disjoint list

The best way is a list comprehension.

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]

You can join both lists