python集合中的内置方法

140 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

集合的内置方法

  • set.add(elmnt)用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
fruits = {"apple", "banana", "cherry"}

fruits.add("orange")
print(fruits)  
# {'orange', 'cherry', 'banana', 'apple'}

fruits.add("apple")
print(fruits)  
# {'orange', 'cherry', 'banana', 'apple'}
  • set.update(set)用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
x = {"apple", "banana", "cherry"}

y = {"google", "baidu", "apple"}

x.update(y)

print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}

y.update(["lsgo", "dreamtech"])

print(y)

# {'lsgo', 'baidu', 'dreamtech', 'apple', 'google'}
  • set.remove(item) 用于移除集合中的指定元素。如果元素不存在,则会发生错误。
fruits = {"apple", "banana", "cherry"}

fruits.remove("banana")

print(fruits) 
# {'apple', 'cherry'}

  • set.discard(value) 用于移除指定的集合元素。remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
fruits = {"apple", "banana", "cherry"}

fruits.discard("banana")

print(fruits)  
# {'apple', 'cherry'}

  • set.pop() 用于随机随机随机(重要的事情说三遍)移除一个元素。
fruits = {"apple", "banana", "cherry"}

x = fruits.pop()

print(fruits)  
# {'cherry', 'apple'}

print(x)  
# banana


由于 set 是无序和无重复元素的集合,所以两个或多个 set 可以做数学意义上的集合操作。

  • set.intersection(set1, set2) 返回两个集合的交集。
  • set1 & set2 返回两个集合的交集。
  • set.intersection_update(set1, set2) 交集,在原始的集合上移除不重叠的元素。
a = set('abracadabra')

b = set('alacazam')

print(a)  
# {'r', 'a', 'c', 'b', 'd'}

print(b)  
# {'c', 'a', 'l', 'm', 'z'}

c = set.intersection(a, b)

print(c)  
# {'a', 'c'}

print(a & b)  
# {'c', 'a'}

set.intersection_update(a, b)

print(a)  
# {'a', 'c'}
  • set.union(set1, set2) 返回两个集合的并集。
  • set1 | set2 返回两个集合的并集。
a = set('abracadabra')

b = set('alacazam')

print(a)  # {'r', 'a', 'c', 'b', 'd'}

print(b)  # {'c', 'a', 'l', 'm', 'z'}

print(a | b)  

# {'l', 'd', 'm', 'b', 'a', 'r', 'z', 'c'}

c = a.union(b)

print(c)  

# {'c', 'a', 'd', 'm', 'r', 'b', 'z', 'l'}
  • set.difference(set) 返回集合的差集。
  • set1 - set2 返回集合的差集。
  • set.difference_update(set) 集合的差集,直接在原来的集合中移除元素,没有返回值。
a = set('abracadabra')

b = set('alacazam')

print(a)  
# {'r', 'a', 'c', 'b', 'd'}

print(b)  
# {'c', 'a', 'l', 'm', 'z'}

c = a.difference(b)

print(c)  # {'b', 'd', 'r'}

print(a - b)  # {'d', 'b', 'r'}

print(a)  # {'r', 'd', 'c', 'a', 'b'}

a.difference_update(b)

print(a)  # {'d', 'r', 'b'}
  • set.symmetric_difference(set)返回集合的异或。
  • set1 ^ set2 返回集合的异或。
  • set.symmetric_difference_update(set)移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
a = set('abracadabra')

b = set('alacazam')

print(a)  
# {'r', 'a', 'c', 'b', 'd'}

print(b)  
# {'c', 'a', 'l', 'm', 'z'}

c = a.symmetric_difference(b)

print(c)  
# {'m', 'r', 'l', 'b', 'z', 'd'}

print(a ^ b) 
# {'m', 'r', 'l', 'b', 'z', 'd'}

print(a)  
# {'r', 'd', 'c', 'a', 'b'}

a.symmetric_difference_update(b)

print(a)  
# {'r', 'b', 'm', 'l', 'z', 'd'}
  • set.issubset(set)判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
  • set1 <= set2 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。
x = {"a", "b", "c"}

y = {"f", "e", "d", "c", "b", "a"}

z = x.issubset(y)

print(z)  
# True

print(x <= y)  
# True

x = {"a", "b", "c"}

y = {"f", "e", "d", "c", "b"}

z = x.issubset(y)

print(z) 
# False

print(x <= y)  # False
  • set.issuperset(set)用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
  • set1 >= set2 判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。
x = {"f", "e", "d", "c", "b", "a"}

y = {"a", "b", "c"}

z = x.issuperset(y)

print(z)  
# True

print(x >= y) 
# True

x = {"f", "e", "d", "c", "b"}

y = {"a", "b", "c"}

z = x.issuperset(y)

print(z)  
# False

print(x >= y) 
# False

  • set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。
x = {"f", "e", "d", "c", "b"}

y = {"a", "b", "c"}

z = x.isdisjoint(y)

print(z)  # False

x = {"f", "e", "d", "m", "g"}

y = {"a", "b", "c"}

z = x.isdisjoint(y)

print(z) 
# True