一、什么是集合set
1.集合是可变的容器(可添加、删除数据) |
|
2.集合内的数据对象,都是唯一的 |
|
3.集合是无序的存储结构,集合中的数据没有先后顺序关系 (因为无序,所以插入删除的速度极快) |
|
4.集合内的元素必须是不可变的对象 (不能把列表、字典插入到集合内) |
|
5.集合是可迭代对象 |
|
6.集合是相当于只有键没有值的字典(键则是集合的数据) |
|
创建空集合 |
Set()(返回的布尔值为False) S = { } (创建的是空字典)
扫描二维码关注公众号,回复:
1683884 查看本文章
|
创建非空集合 |
s = {1, 2, 3} |
二、集合的构造函数
Set() |
|
Set(iterable) |
用可迭代对象创建一个新集合 |
示例 |
|
s = set() s = {1, 2, 3, 4} s= set(‘ABC’) s = set(“ABCCBA”) s = set({1:‘一’,2:‘二’,5:‘五’}) s = set( [1, 2, 3, 2] ) s = {1,2, (3.1,3.2)} s = {1,2, [ 3.1,3.2 ] } {{1,2}:‘一、二’} {(1,2):‘一、二’} |
>>> s = {‘A’,‘B’,‘C’} >>>s = {‘A’,‘B’,‘C’} >>> s = {1, 2, 5} >>> s = {1, 2, 3 } >>>放了3个元素 >>>TypeError,集合里面不能放可变的,such as列表、字典、集合 >>>TypeError,字典的键也不能是可变的 >>>可以,元组是不可变的 |
三、集合的运算
交集 |
& |
S1={1, 2, 3} s2={2, 3, 4} s3=s1&s2 >>>s3={2, 3} |
并集 |
| |
S1={1, 2, 3} s2={2, 3, 4} s3=s1| s2 >>>s3={1, 2, 3, 4} |
补集 |
- |
S1={1, 2, 3} s2={2, 3, 4} s3=s1- s2 >>>s3={1} 生成属于s1,但不属于s2的元素的集合 |
子集 |
< |
判断子集 S1={4, 5, 6} S2={4, 5} |
超集 |
> |
判断超集 S1>s2 >>>True,是s2超集 S2<s1 >>>True,是s1子集 |
<= >= |
||
对称补集 |
^ |
S1={1, 2, 3} s2={2, 3, 4} s3=s1^s2 >>>s3={1, 4} |
== != |
{1, 2, 3} == {2, 3, 1} >>>True |
四、in / not in
判断一个元素是否存在于集合中 |
集合和字典优点:In/not in运算符的查找速度快 |
五、集合的内建函数
len(x);max(x);min(x);sum(x);any(x);all(x) |
六、集合的方法
略
七、集合推导式
用可迭代对象生成集合的表达式 |
|
语法 |
{ 表达式 for 变量 in 可迭代对象 [ if 真值表达式 ] } 注:[ ]括起来的部分可略 |
示例 |
|
L= [1, 3, 5, 7, 2, 4 , 6, 8, 1, 4, 7, 9 ] S = set (L) >>>去掉重复的元素 S = {x for x in L } >>>去掉重复的元素 |
|
推导式内的for子句可嵌套 |
八、固定集合frozenset
是不可变的、无序的,含有唯一元素的集合 |
|
作用 |
固定集合可以作为字典的键,也可以作为集合的值 (因为固定集合不可变) |
创建空固定集合 |
fz=frozenset() |
创建非空固定集合 |
frozenset(iterable) |
示例 |
|
fz=frozenset([2, 3, 5, 7]) |
|
Frozenset([1, 2, 3, 4, 5, 2, 3, 4, 5,6]) |
>>>frozenset( {1, 2, 3, 4, 5, 6} ) |
九、固定集合的运算
同set运算完全一致 |
& | - ^ |
< <= > >= == != |
in/not in |
十、固定集合的方法
相当于集合的全部方法去掉修改集合的方法
可以fz.copy()
可以在交互模式下,输入‘fz.’,再按两次tab键,查看frozenset的方法