Python基础学习08--集合
集合—set
是一个无序的不重复的元素序列。
集合的特征
- 集合内数据无序,即无法使用索引和分片
- 集合内部数据元素具有唯一性,可以用来排除重复数据
- 集合内的数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据
创建集合
# 创建空集合 set1 = set() print('set1的数据类型为:',type(set1)) # 创建存在数据的集合 set2 = {1} print('set2的数据类型为:',type(set2)) print('set2 :',set2) # 创建多数据的集合 set3 = {1,'1',1,2,3,1} # 集合中存在3个 1 print('set3的数据类型为:',type(set3)) print('set3 :',set3)
输出结果如下:
set1的数据类型为: <class 'set'> set2的数据类型为: <class 'set'> set2 : {1} set3的数据类型为: <class 'set'> set3 : {'1', 1, 2, 3} # 从结果可以看出,集合中只保留1个 1 # 感兴趣的可以多次执行,会发现set是随机保留 1 个重复数据
集合的常用方法
1、add()
添加元素到集合中,如果元素已存在,则不进行任何操作。
set4 = {1,2,3,4} print('set4-前 :',set4) set4.add(1) # 添加set4中已有元素 print('set4-后 :',set4) set4.add(0) # 添加set4中没有的元素 print('set4-后 :',set4)
set4-前 : {1, 2, 3, 4}
set4-后 : {1, 2, 3, 4} set4-后 : {1, 2, 3, 4, 5}
2、update()
添加元素,且参数可以是列表,元组,字典等
set4 = {1,2,3,4} print('set4-前 :',set4) set4.update({0:'5'}) print('set4-后-dict :',set4) set4.update([-1,5]) print('set4-后-list :',set4)
set4-前 : {1, 2, 3, 4} set4-后-dict : {0, 1, 2, 3, 4} set4-后-list : {0, 1, 2, 3, 4, 5, -1}
3、remove()
移除元素,如果元素不存在,则会发生错误
4、discard()
移除元素,如果元素不存在,不会发生错误
5、pop()
随机移除一个元素
set4 = {1,2,3,4,5} print('set4-前 :',set4) set4.remove(3) # 移除元素 3 print('set4-后-remove :',set4) set4.discard(1) # 移除元素 3 print('set4-后-discard :',set4) set4.pop() # 随机移除某元素 print('set4-后-pop :',set4) set4.discard(1) # 移除集合中不存在的元素 1 print('set4-discard-后 :',set4) set4.remove(1) # 移除集合中不存在的元素 1 print('set4-remove-后 :',set4)
set4-前 : {1, 2, 3, 4, 5} set4-后-remove : {1, 2, 4, 5} set4-后-discard : {2, 4, 5} set4-后-pop : {4, 5} set4-discard-后 : {4, 5} KeyError: 1 # remove方法,移除set中不存在的元素,会报错
6、intersection()
两个集合的交集
7、difference()
两个集合的差集
8、union()
两个集合的并集
9、issubset()
检查检查一个集合是否为另一个子集
set5 = {1,2,3,4,5,6} set6 = {5,6,7,8,9} s1 = set5.intersection(set6) # set5 ∩ set6 print('set5 ∩ set6 =',s1) s2 = set5.difference(set6) # set5 - set6 print('set5 - set6 =',s2) s3 = set5.union(set6) # set5 ∪ set6 print('set5 ∪ set6 =',s3) s4 = set5.issubset(set6) # set5 是 set6的子集 print('set5 ⊆ set6 ',s4)
set5 ∩ set6 = {5, 6} set5 - set6 = {1, 2, 3, 4} set5 ∪ set6 = {1, 2, 3, 4, 5, 6, 7, 8, 9} set5 ⊆ set6 False
集合的数学操作
set5 = {1,2,3,4,5,6} set6 = {5,6,7,8,9} s1 = set5 - set6 s2 = set6 - set5
s3 = set5 + set6
print('set5 :',set5) print('set6 :',set6) print('set5 - set6 :',s1) print('set6 - set5 :',s2)
set5 : {1, 2, 3, 4, 5, 6} set6 : {5, 6, 7, 8, 9} set5 - set6 : {1, 2, 3, 4} set6 - set5 : {8, 9, 7} # 从结果中可以看出,集合相减。是指减去集合的交集部分
TypeError: unsupported operand type(s) for +: 'set' and 'set'
# 集合不能相加