Opposite of set.intersection in python?

前端 未结 5 549
你的背包
你的背包 2020-12-24 11:20

In Python you can use a.intersection(b) to find the items common to both sets.

Is there a way to do the disjoint opposite version of this? Ite

相关标签:
5条回答
  • 2020-12-24 11:56

    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.

    0 讨论(0)
  • 2020-12-24 11:58
    a={1,2,4,5,6}
    b={5,6,4,9}
    c=(a^b)&b
    print(c) # you got {9}
    
    0 讨论(0)
  • 2020-12-24 11:58

    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

    0 讨论(0)
  • 2020-12-24 12:11

    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

    0 讨论(0)
  • 2020-12-24 12:18

    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

    0 讨论(0)
提交回复
热议问题