数据类型 | 定义符号 | 访问元素 | 是否可变 | 是否重复 | 是否有序 |
列表 | [ ] | 索引 | 可变 | 可重复 | 有序 |
元组 | () | 索引 | 不可变 | 可重复 | 有序 |
字典 | {key:value} | 键 | 可变 | 可重复 | 无序 |
集合 | { } | 可变 | 不可重复 | 无序 |
基本概念
python语言中的集合是无序的、可变的容器类对象,所有元素放在一对大括号中,元素之间使用英文半角逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复。
集合中只能包含数字、字符串、元组等不可变类型或可哈希的数据,不能包含列表、字典、集合等可变类型或不可哈希的数据,包含列表或其他可变类型数据的元组也不能作为集合的元素。
集合中的元素是无序的,元素存储顺序和添加顺序并不一致,先放入集合的元素不一定存储在前面。集合中的元素不存在“位置”或“索引”的概念,不支持使用下标直接访问指定位置上的元素,不支持使用切片访问其中的元素,也不支持使用random中的choice()和choices()函数从集合中随机选取元素,但支持使用random模块中的sample()函数随机选取不重复的部分元素。
集合创建与删除
除了把若干可哈希对象放在一对大括号内创建集合,也可使用set()函数将列表、元组、字符串、range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素。在转换为集合的时候只保留一个,自动去除重复元素。如果原序列或可迭代对象中有可变类型的数据,无法转换成为集合,抛出TypeError异常并提示对象不可哈希。当不再适应某个集合时,可以使用dle语句删除整个集合。
集合常用方法
原地增加/删除集合元素
集合方法add()、update()可以用于向集合中添加新元素,difference_update()、intersection_update()、pop()、remove()、symmetric_difference_update()、clear()可以用于删除集合中的元素,这些方法都是对集合对象进行原地修改。
计算交集/并集/差集/对称差集返回新集合
集合方法difference()、intersection()、union()分别用来返回当前集合于另外一个或多个集合(或其他可迭代对象)的差集、交集、并集,方法symmetric_difference()用来返回当前集合与另外一个集合(或可迭代对象)的对称差集合。
集合测试
集合方法issubset()测试当前集合是否为另一个集合的子集、issuperset()是否为另一个集合的超集、isdisjoint()是否与另一个集合不相邻(或交集是否为空)。