DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

Set & Frozenset functions in Python (3)

Buy Me a Coffee

*Memo:

  • My post explains set and frozenset functions (1).
  • My post explains set and frozenset functions (2).
  • My post explains set and frozenset functions (4).
  • My post explains a set (1).
  • My post explains a frozenset (1).

difference() can return the zero or more elements which the set or frozenset has but *others don't have as shown below:

*Memo:

  • The 1st arguments are *others(Optional-Default:()-Type:Iterable):
    • Don't use any keywords like *others=, others=, etc.
  • difference() creates a new set or frozenset.
  • - can do difference(), supporting set and frozenset.

<Set>:

A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = [30, 40]                # list

print(A.difference(B))    # {40, 20}
print(A.difference(C))    # {20, 10}
print(A.difference(B, C)) # {20}
print(A.difference())     # {40, 10, 20, 30}
Enter fullscreen mode Exit fullscreen mode
A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = frozenset([30, 40])     # frozenset

print(A - B)     # {40, 20}
print(A - C)     # {10, 20}
print(A - B - C) # {20}
print(A)         # {40, 10, 20, 30}
Enter fullscreen mode Exit fullscreen mode

<Frozenset>:

A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = [30, 40]                    # list

print(A.difference(B))    # frozenset({40, 20})
print(A.difference(C))    # frozenset({20, 10})
print(A.difference(B, C)) # frozenset({20})
print(A.difference())     # frozenset({40, 10, 20, 30})
Enter fullscreen mode Exit fullscreen mode
A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = {30, 40}                    # set

print(A - B)     # frozenset({40, 20})
print(A - C)     # frozenset({10, 20})
print(A - B - C) # frozenset({20})
print(A)         # frozenset({40, 10, 20, 30})
Enter fullscreen mode Exit fullscreen mode

difference_update() can return the zero or more elements which the set has but *others don't have as shown below:

*Memo:

  • The 1st arguments are *others(Optional-Default:()-Type:Iterable):
    • Don't use any keywords like *others=, others=, etc.
  • difference_update() doesn't create a new set.
  • difference_update() doesn't exist for a frozenset.
  • -= with or without | can do difference_update(), supporting set and frozenset.

<Set>:

A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = [30, 40]                # list

A.difference_update(B)
print(A)
# {20, 40}

A.difference_update(C)
print(A)
# {20}

A.difference_update(B, C)
print(A)
# {20}

A.difference_update()
print(A)
# {20}
Enter fullscreen mode Exit fullscreen mode
A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = frozenset([30, 40])     # frozenset

A -= B
print(A)
# {20, 40}

A -= C
print(A)
# {20}

A -= B | C
print(A)
# {20}
Enter fullscreen mode Exit fullscreen mode

<Frozenset>:

A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = {30, 40}                    # set

A -= B
print(A)
# frozenset({40, 20})

A -= C
print(A)
# frozenset({20})

A -= B | C
print(A)
# frozenset({20})
Enter fullscreen mode Exit fullscreen mode

symmetric_difference() can return the zero or more elements which the set or frozenset has but other doesn't have or which the set or frozenset doesn't have but other has as shown below:

*Memo:

  • The 1st argument is other(Required-Type:Iterable):
    • Don't use other=.
  • symmetric_difference() creates a new set or frozenset.
  • ^ can do symmetric_difference(), supporting set and frozenset.

<Set>:

A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = [30, 40]                # list

print(A.symmetric_difference(B)) # {40, 50, 20}
print(A.symmetric_difference(C)) # {10, 20}
Enter fullscreen mode Exit fullscreen mode
A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = frozenset([30, 40])     # frozenset

print(A ^ B) # {40, 50, 20}
print(A ^ C) # {10, 20}
Enter fullscreen mode Exit fullscreen mode

<Frozenset>:

A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = [30, 40]                    # list

print(A.symmetric_difference(B)) # frozenset({40, 50, 20})
print(A.symmetric_difference(C)) # frozenset({10, 20})
Enter fullscreen mode Exit fullscreen mode
A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = {30, 40}                    # set

print(A ^ B) # frozenset({40, 50, 20})
print(A ^ C) # frozenset({10, 20})
Enter fullscreen mode Exit fullscreen mode

symmetric_difference_update() can return the zero or more elements which the set has but other doesn't have or which the set doesn't have but other has as shown below:

*Memo:

  • The 1st argument is other(Required-Type:Iterable):
    • Don't use other=.
  • symmetric_difference_update() doesn't create a new set.
  • symmetric_difference_update() doesn't exist for a frozenset.
  • ^= can do symmetric_difference_update(), supporting set and frozenset.

<Set>:

A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = [30, 40]                # list

A.symmetric_difference_update(B)
print(A)
# {40, 50, 20}

A.symmetric_difference_update(C)
print(A)
# {50, 20, 30}
Enter fullscreen mode Exit fullscreen mode
A = {10, 20, 30, 40}        # set
B = frozenset([10, 30, 50]) # frozenset
C = frozenset([30, 40])     # frozenset

A ^= B
print(A)
# {40, 50, 20}

A ^= C
print(A)
# {50, 20, 30}
Enter fullscreen mode Exit fullscreen mode

<Frozenset>:

A = frozenset([10, 20, 30, 40]) # frozenset
B = {10, 30, 50}                # set
C = {30, 40}                    # set

A ^= B
print(A)
# frozenset({40, 50, 20})

A ^= C
print(A)
# frozenset({50, 20, 30})
Enter fullscreen mode Exit fullscreen mode

Top comments (0)