1, 集合定义
集合数据类型是没有顺序的简单对象的聚集,且集合中元素不重复。python集合数据类型有可变集合对象(set)和不可变集合对象(frozenset)
集合元素必须是可hash对象,可哈希对象的hash码对应唯一值,所以就是说集合元素必须是不可变的,例如bool, int , float, complex, str, tuple, frozenst,而内置对象List, dict, set就不能包含于集合中。
集合创建:
-
set() #创建一个空的可变集合
-
frozenset() #创建一个不可变的空集合
{1,2,1}
{1,2}
{1, 'a', True}
{True, 'a'}
set('Hello')
{'H', 'e', 'l', 'o'}
{'a', [2,3]}
TypeError
2. 判断集合元素是否存在
x in s #True表示存在
x not in s #True 表示不存在
3, 集合的运算:并集, 交集, 差集和对称差集
运算符 | 说明 |
| | 取并集 |
& | 取交集 |
- | 取差集 |
^ | 取对称差集 |
*:对称差集:(s1|s2)-(s1&s2) = (s1 - s2)|(s2 - s1)
4.集合的比较运算
运算符 | 说明 | 运算符 | 说明 |
== | 判断相等 | <= | 判断子集 |
!= | 判断不等 | >= | 判断超集 |
< | 判断纯子集 | > | 判断纯超集 |
使用集合的相关方法也可以判断集合关系:
s1.isdisjoint(s2) #若s1, s2之间没有相同元素返回True, 否则返回false
s1.issubset(s2) #判断s1是不是s2的子集
s1.issuperset(s2) #判断s1是不是s2的超集
s1.union(s2,...) #返回s1, s2,....的并集
s1.intersection(s2,...) #返回交集
s1.difference(s2,...) #返回差集
s1.symmetric_difference(s2) #返回对称差集
5.集合的长度,最大值,最小值,元素和
使用内置函数:len(), max(), min(), sum()
6.可变集合方法
方法 | 说明 |
s.clear() | 清空集合 |
s.add(x) | 对象x添加到集合 |
s.remove(x) | 从集合中移除对象x;若不存在,KeyError |
s.pop() | 从集合随机弹出一个元素 |
s.discard(x) | 从集合移出对象x(x存在的话) |