集合(set) – 类似于字典
集合的两大功能:
- 集合可以实现去重的功能
- 集合可以实现关系测试:交集;差集;并集;是否子集;是否没有交集
1. 集合的定义
集合里面的元素是没有重复的
定义一个空集合:第一种方法的定义是错误的,生成的是一个字典;第二种方法才是正确的定义一个空集合的方法。
2. 集合的特性
集合是无序的,不重复的数据类型,因此不支持索引;切片;重复和连接,只满足成员操作符和for循环。
3. 集合的增删查
增加:
1. add()—增加单个元素
2. update()—增加多个元素
删除:
1. pop()—默认删除集合的第一个元素,这里与列表刚好相反,尤其注意,不可相互混淆。
2. remove()—删除指定的元素
3. clear()—清空集合元素
查看:
# 并集
print \'并集:\', s1.union(s2) ## 集合关系
print \'并集:\', s1 | s2 ## 数学方法
结果:并集: set([1, 2, 3, 4])
# 交集
print \'交集:\', s1.intersection(s2)
print \'交集:\', s1 & s2
结果:交集: set([2, 3])
# 差集
# 可以理解为s1中有哪些s2中没有的元素
print \'差集:\', s1.difference(s2)
print \'差集:\', s1 - s2
结果:差集: set([1])
# 对等差分:并集-交集
print \'对等差分:\', s1.symmetric_difference(s2)
print \'对等差分:\', s1 ^ s2
结果:对等差分: set([1, 4])
s3 = {1, 2}
s4 = {1, 2, 3}
# s3是否为s4的子集
print s3.issubset(s4)
结果:True
# s3是否为s4的超集
print s3.issuperset(s4)
结果:False
# 两个集合是不是不相交
print s3.isdisjoint(s4)
结果:False
总结
- 可变数据类型:列表,字典,集合
-
不可变数据类型:数值类型,字符串,元组
- 可变数据类型实现某个功能,直接改变可变的数据类型;
- 不可变数据类型实现某个功能,需要将结果赋值给另外一个变量;
-
是否实现for循环
- 可迭代数据类型:str,list,tuple,dict,set
- 不可迭代数据类型:数值类型
-
是否支持索引,切片,重复和连接特性
- 有序的数据类型:str,list,tuple支持
- 无序的数据类型:dict,set不支持