15、集合的定义
- 变量 = {数据1, 数据2, 数据3.。。。}
- 空集合:set()
- 集合是一个无序的 不重复的数据序列
# 集合: 集合是一个无序,不重复的数据序列 # 无序: 程序员无法控制其排不顺序, 程序员无法使用索引查找或修改数据 # 不重复:没有办法在字典中放入相同的值,会自动去重,类似于字典的键 # 无序: set1 = {1, 2, 5, 6, 3, 4} # 程序员无法利用其顺序,有顺序也无用 # 了解:在集合中会使用数据的值计算哈希值,根据哈希值顺序进行排序 print(set1) # {1, 2, 3, 4, 5, 6} # 不重复 set2 = {1, 2, 3, 4, 5, 6, 7, 2, 3} # set会自动去重 print(set2) # {1, 2, 3, 4, 5, 6, 7} # 定义空集合 set3 = set() # {} 是定义空字典的 print(set3) # 集合中能够储存什么数据? # 布尔值在进行计算时 True == 1 Fasle == 0 # 基础数据类型 int float bool 字符串 都可以用集合储存 set4 = {1, 12.3, True, 0, False, ''} print(set4) # TypeError: unhashable type: 'list' # 列表数据无法用集合储存 # set5 = {1, 12.3, True, 0, False, '', [1, 2]} # print(set5) # 元组类型可以放入集合内储存 set6 = {1, 12.3, True, 0, False, '', (1, 2)} print(set6) # TypeError: unhashable type: 'dict' # 字典类型无法用集合储存 # set6 = {1, 12.3, True, 0, False, '', {1:2}} # TypeError: unhashable type: 'set' # 集合类型同样不能使用集合嵌套 # set6 = {1, 12.3, True, 0, False, '', {1,2}} # 结论:列表 字典 集合,不能放入集合中,作为元素出现 # 拓展:不能作为集合元素的数据类型,同样不能作为字典的键出现 dict1 = {(1, 2): 3} print(dict1) # TypeError: unhashable type: 'list' # 列表 字典 集合不能作为字典的键出现 dict2 = {[1, 2]: 3} print(dict2)
16、集合的相关操作
- 集合的增加
- add:添加一个元素,如果值已存在,则去重
- update: 更新元素(在括号中添加可迭代类型),如果值已存在则去重
# add 增加 set1 = {1, 2, 3, 4} # set 在使用add命令后,不会产生新的数据,而是原集合中进行修改 set1.add(5) print(set1) # {1, 2, 3, 4, 5} # update 更新 # TypeError: 'int' object is not iterable # update内部只能填写容器类型(数据序列) # set1.update(6) set1.update([6, 7]) print(set1) # {1, 2, 3, 4, 5, 6, 7} # 如果更新的数据已经存在,则去重 set1.update([1,2]) print(set1) # {1, 2, 3, 4, 5, 6, 7}
- 集合的删除
- remove:根据元素值进行删除,如果元素不存在则报错
- discard:根据元素值进行删除,如果元素值不存在则不报错
- pop:删除任意元素,并返回被删除的值
# remove set1 = {1, 2, 3, 4} # 使用remove可以删除指定值的元素 # set1.remove(3) # print(set1) # {1, 2, 4} # pop 随机删除一个元素,并且将删除的元素返回 # print(set1.pop()) # print(set1) # discard # 如果使用remove删除的元素不存在会怎样? 报错 # set1.remove(13) # KeyError: 13 # 如果使用discard删除元素呢? 不会报错 set1.discard(3) print(set1) # {1, 2, 4} set1.discard(13) print(set1)
- 集合判断:
- in
- not in
# 数据是否在集合中 set1 = {1, 2, 3, 4} # in 判断元素是否在集合中出现 print(4 in set1) # True print(5 in set1) # Fasle # not in 判断元素是否不在集合中 print(4 not in set1) # False print(5 not in set1) # True # 注意:格式 元素 in 集合 # 判断的数据必须要在集合中能够被储存 # TypeError: unhashable type: 'list' # print([1, 2] in set1)
- 集合可以使用for循环遍历,但是遍历顺序随机
# for 遍历 set1 = {1, 2, 3, 4} for i in set1: print(i) # 注意遍历集合,顺序不定 name_set = {'Tom', 'Bob', 'Rose'} for i in name_set: print(i) ''' Rose Tom Bob '''