010 Python中的 集合(set) 和 固定集合(frozenset)

一、什么是集合set

1.集合是可变的容器(可添加、删除数据)

2.集合内的数据对象,都是唯一的

3.集合是无序的存储结构,集合中的数据没有先后顺序关系

(因为无序,所以插入删除的速度极快)

4.集合内的元素必须是不可变的对象

(不能把列表、字典插入到集合内)

5.集合是可迭代对象

6.集合是相当于只有键没有值的字典(键则是集合的数据)

创建空集合

Set()(返回的布尔值为False

S = { } (创建的是空字典)

创建非空集合

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的方法


猜你喜欢

转载自blog.csdn.net/weixin_37767152/article/details/80716625