c++ set输出元素_一步一步学Python3(小学生也适用) 第十四篇: 集合Set类型

37161f6ba2b9a5e377c79114ba0c7497.png

一、集合(set)创建

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

1.1 Python集合创建

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

 set1 = set()       #创建一个空的字典
 set2 = {}          #用{}创建一个空的序列,用于检测是否是集合还是字典
 print('set1类型:',type(set1) )
 print('set2类型:',type(set2))

运行结果:

 set1类型: <class 'set'>
 set2类型: <class 'dict'>

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

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

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 <module>
     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 <module>
     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类型: <class 'set'>
 {1, 2, 3, 4}
 set2类型: <class 'set'>
 {1, 2, 3, 4}
 set3类型: <class 'set'>
 {'t', 'o', 'P', '老', '树', 'y', 'n', 'h'}

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

 set1 = {3,2,1,2,('a','b','c'),'b','b'}
 print('set1类型:',type(set1))
 print(set1)

运行结果:

 set1类型: <class 'set'>                   #类型为集合(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)

运行截屏:

79d0002f44b90ad8b8ee08ca92f332a9.png

添加的元素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 <module>
     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 <module>
     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)

运行结果:

 <class 'set'>                          #清空后的类型
 set()                                  #空集合

结束语:

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


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

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

推荐阅读:

老树Python:一步一步学Python3(小学生也适用) 第十三篇: 字典Dict类型​zhuanlan.zhihu.com
zhihu-card-default.svg
老树Python:一步一步学Python3(小学生也适用) 第十二篇: 元组tuple类型​zhuanlan.zhihu.com
2f0a4626ef0da3234cea74ade9af1804.png
一步一步学Python3(小学生也适用) 第十一篇: 列表List类型​mp.weixin.qq.com
474d9a54773c07ac93b0d6f1417c90df.png
老树Python:一步一步学Python3(小学生也适用) 第十篇: 字符串(str)类型(下)​zhuanlan.zhihu.com
3a98fa267d215a597aa5f74789ff77dd.png
老树Python:一步一步学Python3(小学生也适用) 第九篇: 字符串(str)类型(中)​zhuanlan.zhihu.com
a78b52405f63a661d56a1aa25a1f0437.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值