Python中的set集合如何理解?怎样用?
Admin 2021-09-14 群英技术资讯 864 次浏览
今天给大家分享的是关于Python中的set集合的内容,本文有对Python中的set集合的定义、使用以及其他知识的详细介绍,有需要的朋友可以参考,接下来跟随小编一起看看吧。
集合是什么呢?相信读者朋友们哪怕是没有用过集合这个数据类型。也一定在数学课堂上听过集合这个名词。数学中的集合是一个基本概念,说白了一堆不重复的数字可以组成一个集合。回到Python中集合的数据类型,它可以用来存放多个不重复的数据,并且这些数据的数据类型是不可变类型。这些不可变类型包括数字,字符串,元组。也就是说可变的数据类型如列表,字典是不能作为集合的元素的。
Python中的集合分为两种,一种是set类型的集合,另一种是fronzenset类型的集合。这两种类型的集合的区别是:set集合可变,即可以添加,删除集合内部的元素,而fronzenset集合则不可变。即不能添加,删除集合内部的元素。
set集合的定义是{element1,element2,...,elementn
}, 其中,element1~elementn表示集合中的元素,个数没有限制。每个元素都是唯一的。
创建set集合的方式有两种:
第一种:通过{}
方式创建,其语法格式是:{element1,element2,...,elementn}
第二种:通过
set
函数, 其语法格式是:set(iterable
) 其中iterable
不传的话,则会创建一个空的set对象。传入的iterable必须是可以遍历的序列,例如字符串,列表等。举个例子:
set_demo = {'1', 2, ('码农', '飞哥')} print(set_demo) list = [1, 'test', 1, ('码农', '飞哥')] print('列表list结果=', list) set_demo1 = set(list) print('生成的set结果=', set_demo1)
运行结果是:
{2, ('码农', '飞哥'), '1'} 列表list结果= [1, 'test', 1, ('码农', '飞哥')] 生成的set结果= {1, ('码农', '飞哥'), 'test'}
可以看到列表list中哪怕有两个1元素,但是生成set集合之后还是只有一个1元素,也就是说在集合中值相同的元素只会存储一遍。
删除set集合可以通过del(setname)函数来删除,setname是要删除的set集合名称。
由于集合中的元素是无序的,因此五香向列表那样使用下标访问元素,Python中,访问集合元素最常用的方法是使用循环,将集合中的元素逐一读取出来。
set_demo = {'1', 2, ('码农', '飞哥')} for value in set_demo: print(value)
运行结果是:
2 ('码农', '飞哥') 1
元素的输出也是无序的。
删除集合中的元素的方式有两种:
第一种:通过remove()方法,其语法结构是:setname.remove(element),其中,setname为待操作的set集合,element为需要删除的元素,如果删除失败的话则会报KeyError错误。
第二种:通过discard()方法,其使用跟remove()方法一致,只是如果删除元素失败的话不会报错。
set_demo = {'1', 2, ('码农', '飞哥')} set_demo.remove('1') print('删除元素1之后的集合=', set_demo) set_demo.discard('5') print('删除元素5之后的集合=', set_demo)
运行结果是:
删除元素1之后的集合= {2, ('码农', '飞哥')} 删除元素5之后的集合= {2, ('码农', '飞哥')}
通过add函数可以向集合中添加元素,其语法结构是:setname.add(element),其中setname是待操作的set集合,element是待添加的元素,只能添加不可变的元素,例如:数字,元组或者字符串,不能添加列表,字典,set集合这类可变的数据。
举个例子:
set_demo.add('6') print('添加元素6之后的结果是=', set_demo)
运行结果是:
添加元素6之后的结果是= {2, '6', ('码农', '飞哥')}
在数学中集合是有交集并集和补集的。Python中的集合也是有这些概念的。
通过&
连接两个set集合就能生成一个新的集合,新集合取两个原集合的公共元素。
通过|
连接两个set集合就能生成一个新的集合,新集合取两个原集合的全部元素。
通过-
连接两个set集合就能生成一个新的集合,新集合取一个集合中有而另一个集合中没有的元素。
举个栗子:
set_demo = {1, 3, 5, 6} set_demo1 = {2, 4, 6} print("取交集的结果=", set_demo & set_demo1) print("取并集的结果=", set_demo | set_demo1) print("取差集的结果=", set_demo - set_demo1)
运行结果是
取交集的结果= {6} 取并集的结果= {1, 2, 3, 4, 5, 6} 取差集的结果= {1, 3, 5}
通过dir(set)可以查看set集合中的所有方法。一共有如下方法:
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__',
'__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__',
'__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__',
'__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear',
'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update',
'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update',
'union', 'update']
方法的命名比较规范,按照英文名都能猜测出方法的作用,在此就不在赘述每个方法的含义了。直接举例说明下:
set_demo = {1, 3, 5, 6} set_demo1 = {2, 4, 6} set_demo.update({12, (2, 3)}) print('set_demo调用update方法之后', set_demo) set_demo = {1, 3, 5, 6} print('set_demo调用union方法之后', set_demo.union(set_demo1)) print('set_demo调用difference方法之后', set_demo.difference(set_demo1)) print('set_demo调用__sub__方法之后', set_demo.__sub__(set_demo1))
运行结果是:
set_demo调用update方法之后 {1, 3, (2, 3), 5, 6, 12} set_demo调用union方法之后 {1, 2, 3, 4, 5, 6} set_demo调用difference方法之后 {1, 3, 5} set_demo调用__sub__方法之后 {1, 3, 5}
frozenset集合是set集合的不可变版本,与set集合相比,frozenset集合中的元素不可变,也就是没有添加元素,删除元素的方法。
创建一个frozenset集合的方式是通过frozenset()方法。 其语法格式是:frozenset(iterable) 其中iterable不传的话,则会创建一个空的set对象。传入的iterable必须是可以遍历的序列,例如字符串,列表等。
frozenset_demo = frozenset(list) print("frozenset_demo的类型是=", type(frozenset_demo)) print("frozenset_demo的结果=", frozenset_demo)
运行结果是:
frozenset_demo的类型是= <class 'frozenset'>
frozenset_demo的结果= frozenset({('码农', '飞哥'), 1, 'test'})
关于python中的set集合的内容就介绍到这,上述实例对大家学习和理解python中的set集合有一定的帮助,感兴趣的朋友可以参考,想要了解更多大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍了PyTorch实现手写数字识别的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
这篇文章主要介绍了TensorFlow如何指定GPU训练模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
python安装完毕后,提示找不到ssl模块:[www@pythontab com~]$pythonPython2 7 15(default,Oct232018,18:08:43)[GCC4 4 720120313(RedHat4
这篇文章主要介绍了python 如何实现一个截屏工具,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
本文主要介绍了Pycharm远程连接服务器跑代码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008