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存在的话) |