Python 集合类型
集合基本上是不同散列表对象的无序集合。我们可以使用集合进行一些数学运算,例如集合并集、交集、差集等。我们还可以使用集合从集合中删除重复项。
集合不记录元素位置。它不支持索引、切片或其他与序列相关的操作。
在 Python 中,基本上有两种类型的集合。set 和 frozenset。set 类型是可变的,而 frozenset 是不可变的。我们可以在 set 上执行 add()、remove() 和此类操作,但 frozenset 不允许。
一些与集合相关的函数和操作如下所示:
方法 len(s)
len() 方法返回集合中元素的数量。
操作 (x in s) 或 (y not in s)
in 和 not in 操作用于检查元素是否属于集合。在第一个语句 (x in s) 中,当值 x 在集合 s 中时,它将返回 True。第二个 (y not in s) 将返回 True,当元素 y 不存在于集合中时。
方法 isdisjoint(other_set)
此方法将检查 other_set 是否与当前集合不相交。如果两者至少有一个元素相同,则该方法将返回 False。
方法 issuperset(other_set)
当 other_set 集合中的所有元素也存在于当前集合中时,此函数返回 True。它基本上检查当前集合是否为 other_set 的超集。
方法 union(other_set)
union() 函数通过收集当前集合和 other_set 中的所有元素来返回一个新集合。
方法 intersection(other_set)
intersection() 函数通过收集当前集合和 other_set 中的公共元素来返回一个新集合。
方法 difference(other_set)
difference() 方法将返回一个集合,其中最终集合包含第一个集合中的所有元素,除了这两个集合的公共元素。
方法 add(elem)
将元素 elem 添加到集合中。
方法 discard(elem)
从集合中删除元素 elem。当 elem 存在于集合中时,这将起作用。还有另一种称为 remove() 的方法。在 remove() 中,如果项目不存在于集合中,它将引发 KeyError。
示例代码
mySet1 = {1, 2, 5, 6} mySet2 = {8, 5, 3, 4} mySet3 = set(range(15)) # all elements from 0 to 14 in the set mySet4 = {10, 20, 30, 40} print(set(mySet1.union(mySet2))) print(set(mySet1.intersection(mySet2))) print(set(mySet1.difference(mySet2))) print(mySet3.issuperset(mySet1)) print(mySet1.isdisjoint(mySet4)) mySet4.add(45) print(mySet4) mySet4.discard(40) print(mySet4)
输出
set([1, 2, 3, 4, 5, 6, 8]) set([5]) set([1, 2, 6]) True True set([40, 10, 20, 45, 30]) set([10, 20, 45, 30])