集合——set的定义:test = {1,2,3,4,5} 或 test = frozenset(1,2,3,4,5)
特点:1. 集合是可变数据类型
2. 集合中元素是无序的,可以是数字、字符串与元组等不可变数据类型
3. 通过test = {1,2,3,4,5}方法定义的是可变集合;通过test = frozenset(1,2,3,4,5)方法定义的是不可变集合
1. 将指定元素添加到集合中
1 test = {1,2,3,4,5} 2 test.add(8) 3 print(test) 4 5 """ 6 运行结果:{1, 2, 3, 4, 5, 8} 7 结果分析:将元素8添加到集合test中 8 """
2. 拷贝集合中元素
1 test = {1,2,3,4,5} 2 v = test.copy() 3 print(v) 4 5 """ 6 运行结果:{1, 2, 3, 4, 5} 7 结果分析:将集合test中所有元素拷贝并赋值给v 8 """
3. 删除集合中指定元素;当该元素不存在时,返回错误信息
1 test = {1,2,3,4,5} 2 test.remove(3) 3 print(test) 4 5 """ 6 运行结果:{1, 2, 4, 5} 7 结果分析:删除集合test中值为3的元素 8 """
4. 删除集合中指定元素;当该元素不存在时,不做任何处理
1 test = {1,2,3,4,5} 2 test.discard(3) 3 print(test) 4 print("--"*20) 5 6 test.discard(8) 7 print(test) 8 """ 9 运行结果: 10 {1, 2, 4, 5} 11 ---------------------------------------- 12 {1, 2, 4, 5} 13 结果分析: 14 删除集合中值为3的元素; 15 由于集合中不存在值为8的元素,所以不做任何处理,集合中元素不变 16 """
5. 随机删除并返回集合中某一元素
1 test = {1,2,3,4,5} 2 v = test.pop() 3 print(test) 4 print(v) 5 6 """ 7 运行结果: 8 {2, 3, 4, 5} 9 1 10 结果分析:随机删除集合中某一元素,并将该元素值返回给变量v 11 """
6. 清空集合中元素
1 test = {1,2,3,4,5} 2 test.clear() 3 print(test) 4 5 """ 6 运行结果:set() 7 结果分析:清空集合中所有元素,得到一个空白集合 8 """
7. 集合交运算
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 test = s1.intersection(s2) #或test = s1 & s2 4 print(test) 5 6 """ 7 运行结果:{1, 3, 5} 8 结果分析:计算集合s1和s2的交集 9 """
8. 集合并运算
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 test = s1.union(s2) #或test = s1 | s2 4 print(test) 5 6 """ 7 运行结果:{1, 2, 3, 4, 5, 7, 9} 8 结果分析:计算集合s1和s2的并集 9 """
9. 集合差运算
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 test = s1.difference(s2) #或test = s1 - s2 4 print(test) 5 6 """ 7 运行结果:{2, 4} 8 结果分析:计算集合s1和s2的差集 9 """
10. 集合交叉补集运算
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 test = s1.symmetric_difference(s2) #或test = s1 ^ s2 4 print(test) 5 6 """ 7 运行结果:{2, 4, 7, 9} 8 结果分析:计算集合s1和s2的交叉补集(相当于从两集合的并集中减去两集合交集) 9 """
11. 求集合交集,并将运算结果赋予源集合
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 s1.intersection_update(s2) 4 print(s1,s2) 5 6 """ 7 运行结果:{1, 3, 5} {1, 3, 5, 7, 9} 8 结果分析:计算集合s1和s2的交集,并将运算结果赋予集合s1,集合s2保持不变 9 """
12. 求集合差集,并将运算结果赋予源集合
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 s1.difference_update(s2) 4 print(s1,s2) 5 6 """ 7 运行结果:{2, 4} {1, 3, 5, 7, 9} 8 结果分析:计算集合s1和s2的差集,并将运算结果赋予集合s1,集合s2保持不变 9 """
13. 求集合交叉补集,并将运算结果赋予源集合
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 s1.symmetric_difference_update(s2) 4 print(s1,s2) 5 6 """ 7 运行结果:{2, 4, 7, 9} {1, 3, 5, 7, 9} 8 结果分析:计算集合s1和s2的交叉补集,并将运算结果赋予集合s1,集合s2保持不变 9 """
14. 判断两集合是否存在交集
1 s1 = {1,2,3,4,5} 2 s2 = {1,3,5,7,9} 3 print(s1.isdisjoint(s2)) 4 5 """ 6 运行结果:False 7 结果分析: 8 若两集合不存在交集或其交集为空,则返回True 9 若两集合存在交集或其交集非空,则返回False 10 """
15. 判断两集合是否满足s1<=s2
1 s1 = {1,2,3,4,5} 2 s2 = {1,2,3,4,5,6,7,8,9} 3 print(s1.issubset(s2)) 4 5 """ 6 运行结果:True 7 结果分析:若两集合满足s1<=s2,即集合s1为s2的子集,则返回True;否则返回False 8 """
16. 判断两集合是否满足s1>=s2
1 s1 = {1,2,3,4,5,6,7,8,9} 2 s2 = {1,2,3,4,5} 3 print(s1.issuperset(s2)) 4 5 """ 6 运行结果:True 7 结果分析:若两集合满足s1>=s2,即集合s1为s2的"父"集,则返回True;否则返回False 8 """
17. 更新集合元素
1 s1 = {1,2,3,4,5,6,7,8,9} 2 s2 = {1,2,3,4,5} 3 s2.update(s1) 4 print(s2) 5 6 """ 7 运行结果:{1, 2, 3, 4, 5, 6, 7, 8, 9} 8 结果分析:将集合s1的各个元素更新到集合s2中,相当于s1=s2 9 """