集合(set)是一个无序的不重复元素序列。如下所示:
代码语言:javascript复制my_set = {1, 2, 3, 4, 1, 2, 3, 4} # 集合,满足无序性,互异性,确定性。
print(my_set)
程序的输出结果如下所示:
需要注意的是,创建一个空集合必须使用 set() 而不是 { },因为 { } 是用来创建一个空字典。
代码语言:javascript复制empty_set = set()
print(empty_set)
这段代码的执行结果如下所示:
集合中的元素不能是可变数据类型,但是集合本身是可变数据类型。
集合基本的操作函数
代码语言:javascript复制s = set()
s.add("123") # 增加元素
s.add("456")
c_list = {}
# s.add(c_list) # set的元素不能是可变类型
print(s)
s.remove("123") # 删除元素
print(s)
s.update("123") # 注意该函数的参数必须是一个可迭代对象
print(s)
s.pop() # 弹出顶部元素,但是集合是无序的。
print(s)
程序执行结果:
代码语言:javascript复制{'123', '456'}
{'456'}
{'1', '2', '456', '3'}
{'2', '456', '3'}
这些操作其他的可变数据类型也都有,前面说过这里的集合满足无序性,互异性,确定性。也就是说set()几乎就是数学上的集合。因此集合重点操作应该在求交集,并集,补集上,而不是前面所说的。
集合的交并补运算
代码语言:javascript复制s1 = {1, 3, 5, 7, 9}
s2 = {2, 4, 6, 8, 10}
print(s1 & s2) # 求交集
print(s1 | s2) # 求并集
s3 = s1 | s2 # s3集合
print(s3 - s1) # 子集s1在s3中的绝对补集(求补集)
s4 = {3, 6, 9}
print(s3 ^ s4) # 求两个集合的交集的补集
print(s1 ^ s2)
print(s3 > s2) # 判断是否是超集和子集关系
print(s1 < s2)
程序执行结果:
代码语言:javascript复制set()
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{2, 4, 6, 8, 10}
{1, 2, 4, 5, 7, 8, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
True
False
我们在使用集合的时候,基本是使用集合的特性来进行去重。这样比较简单。