本文已参与「新人创作礼」活动,一起开启掘金创作之路。
集合的内置方法
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