python小学生课本剧_一步一步学Python3(小学生也适用) 第十四篇: 集合Set类型

一、集合(set)创建

Python中的集合(set)是用来保存不重复的元素,它是一个无序的序列。集合中的元素都是唯一的,互不相同。

1.1 Python集合创建

我们可以用大括号{ } 或者set() 创建集合,但必须注意,创建一个空集合只能用set()而不能用{},因为在前面我们创建一个空字典是就是用的{}。集合中的相邻元素之间用逗号(,)分隔。

set1 = set() #创建一个空的字典

set2 = {} #用{}创建一个空的序列,用于检测是否是集合还是字典

print('set1类型:',type(set1) )

print('set2类型:',type(set2))

运行结果:

set1类型:

set2类型:

集合中的元素是没有个数限制的。

集合中的元素只能是不可变的数据类型,包括整形、浮点型、字符串,元组,不能是列表,字典及集合类型。

set语法

class set([iterable])

set1 = set({{'Tom':18,'Lim':20}}) #集合中的元素是字典

运行结果:

Traceback (most recent call last):

File "g:/老树Python/python38_3VScode/democode/T14.py", line 1, in

set1 = set({{'Tom':18,'Lim':20}})

TypeError: unhashable type: 'dict'

set1 = set({['a','b','c'],[1,2,3]}) #集合中的元素是列表

运行结果:

Traceback (most recent call last):

File "g:/老树Python/python38_3VScode/democode/T14.py", line 1, in

set1 = set({['a','b','c'],[1,2,3]})

TypeError: unhashable type: 'list'

正确的Python集合创建方法:

set1 = set([1,2,3,4])

set2 = set((1,2,3,4))

set3 = set('老树Python')

print('set1类型:',type(set1))

print(set1)

print('set2类型:',type(set2))

print(set2)

print('set3类型:', type(set3))

print(set3)

运行结果:

set1类型:

{1, 2, 3, 4}

set2类型:

{1, 2, 3, 4}

set3类型:

{'t', 'o', 'P', '老', '树', 'y', 'n', 'h'}

集合中的元素是唯一的,所以当我们创建集合是,里面有重复的元素,只会保留一份。所以集合具有去重功能。

set1 = {3,2,1,2,('a','b','c'),'b','b'}

print('set1类型:',type(set1))

print(set1)

运行结果:

set1类型: #类型为集合(set)

{1, 2, 3, 'b', ('a', 'b', 'c')} #把相同的元素2和'b'已经去掉相同的,仅保留一份

需要注意:Python中的集合set是无序的,所以每次输出时元素的排列顺序可能都不相同

Python中有两种集合类型,一种是set类型的集合,另一种是frozenset类型的集合,它们唯一的区别是,set类型集合可以做添加、删除元素的操作,frozenset集合不行。本篇只介绍set类型集合。

二、Python集合添加元素

set.add(x)

将元素x添加到集合set中,如果元素已存在,则不进行任何操作

set1 = set(['BeiJin','ShangHai','GuangZhou'])

print(set1)

set1.add('ShenZhen')

print(set1)

set1.add(('WuHan','ChangSha')) #添加元组,不可变,作为一个元素添加到set中

print(set1)

set1.add(['WuHan', 'ChangSha']) #添加列表,出错

print(set1)

运行截屏:

添加的元素x只能为一个且不可变类型如:字符串,元组,整型,浮点型的。

set1 = set(['BeiJin','ShangHai','GuangZhou'])

print(set1)

set1.add('ShenZhen','ChongQin') # 添加了两上字符串,会报错

运行结果:

{'GuangZhou', 'BeiJin', 'ShangHai'}

Traceback (most recent call last):

File "g:/老树Python/python38_3VScode/democode/T14.py", line 3, in

set1.add('ShenZhen','ChongQin')

TypeError: add() takes exactly one argument (2 given)

另一个方法:update,可以添加元素,且参数可以是列表,元组,列表,字典等

set.update(x)

set1 = set(['BeiJin','ShangHai','GuangZhou'])

print(set1)

set1.update({'ShenZhen', 'ChongQin'}) #参数是set

print(set1)

set1.update(('WH', 'CS')) #参数是元组

print(set1)

set1.update(['CA','FZ']) #参数是列表

print(set1)

运行结果:

{'BeiJin', 'GuangZhou', 'ShangHai'}

{'ShenZhen', 'BeiJin', 'ShangHai', 'ChongQin', 'GuangZhou'}

{'ShenZhen', 'BeiJin', 'WH', 'ShangHai', 'ChongQin', 'CS', 'GuangZhou'}

{'BeiJin', 'WH', 'ShenZhen', 'FZ', 'CA', 'ShangHai', 'CS', 'ChongQin', 'GuangZhou'}

由上可看出,使用.update方法添加的元素是集合,元组,列表时,update方法直接把集合,元组或列表中元素分别提取出来添加到原有集合中。

三、Python集合移除元素

set.remove(x)

set1 = set(['BeiJin','ShangHai','GuangZhou','WuHan','ChangSha'])

print(set1)

set1.remove('WuHan') #移除元素'WuHan'

print(set1)

set1.remove('ChenDu') #移除一个集合中不存在的元素,会报错

运行结果:

{'ShangHai', 'BeiJin', 'GuangZhou', 'ChangSha', 'WuHan'}

{'ShangHai', 'BeiJin', 'GuangZhou', 'ChangSha'}

Traceback (most recent call last):

File "g:/老树Python/python38_3VScode/democode/T14.py", line 5, in

set1.remove('ChenDu') #移除一个集合中不存在的元素

KeyError: 'ChenDu'

由上可以看到使用set.remove(x)方法,如果移除一个不存在的元素,会报错。

此时我们可以使用另一种方法来操作

set.discard(x)

set1 = set(['BeiJin','ShangHai','GuangZhou','WuHan','ChangSha'])

print(set1)

set1.discard('WuHan') #移除元素'WuHan'

print(set1)

set1.discard('ChenDu') #移除一个集合中不存在的元素

print(set1)

运行结果:

{'ShangHai', 'GuangZhou', 'WuHan', 'BeiJin', 'ChangSha'}

{'ShangHai', 'GuangZhou', 'BeiJin', 'ChangSha'}

{'ShangHai', 'GuangZhou', 'BeiJin', 'ChangSha'}

四、计算集合元素个数

set1 = set(['BeiJin','ShangHai','GuangZhou','WuHan','ChangSha'])

print(len(set1)) #用len()方法求集合元素个数

五、判断元素是否在集合中存在

x in set

判断元素x是否在集合s中,存在返回True,不存大返回False

set1 = set(['BeiJin','ShangHai','GuangZhou','WuHan','ChangSha'])

print('BeiJin' in set1)

print('HangZhou' in set1)

运行结果:

True #'BeiJin' 在集合元素中,返回True

False #'HangZhou'不在集合元素中,返回False

六、清空集合

set.clear()

set1 = set(['BeiJin','ShangHai','GuangZhou','WuHan','ChangSha'])

set1.clear()

print(type(set1))

print(set1)

运行结果:

#清空后的类型

set() #空集合

结束语:

这一篇只是简单的介绍了集合的基础知识,没有深入的往下讲。集合set中还有其他的一些方法,大家自行了解一下。在实际使用或进阶学习过程中再深入去了解,在初学阶段,还是把基础的知识弄懂比好。

原创不易,喜欢就给个赞,点个关注吧!

更多的内容可以关注公众号:老树Python

推荐阅读:老树Python:一步一步学Python3(小学生也适用) 第十三篇: 字典Dict类型​zhuanlan.zhihu.com老树Python:一步一步学Python3(小学生也适用) 第十二篇: 元组tuple类型​zhuanlan.zhihu.com一步一步学Python3(小学生也适用) 第十一篇: 列表List类型​mp.weixin.qq.com老树Python:一步一步学Python3(小学生也适用) 第十篇: 字符串(str)类型(下)​zhuanlan.zhihu.com老树Python:一步一步学Python3(小学生也适用) 第九篇: 字符串(str)类型(中)​zhuanlan.zhihu.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值