当前位置: 首页 > 后端技术 > Python

Python的集合集合详解

时间:2023-03-26 00:40:56 Python

Python中还包含了一种数据类型——集合(set)。集合是唯一元素的无序集合。基本功能包括关系测试和消除重复元素。集合对象还支持并集(union)、交集(intersection)、差集(difference)和对称差集(symmetricdifferenceset)等数学运算。创建集合集花括号或set()函数可用于创建集合。 set集合类要求参数必须是迭代器类型,如:序列、字典等,然后转化为无序不重复的元素集合。由于集合不重复,因此可以对字符串、列表和元组进行去重。1.创建一个空集合>>>s=set()>>>sset()>>>s1=set([]) #list>>>s1set()>>>s2=set(()) #tuple>>>s2set()>>>s3=set({}) #dictionary>>>s3set()注意:要创建一个空集合,您必须使用set()而不是{}.后者用于创建空字典,这是我们稍后描述的数据结构。2、创建非空集合,即列表、元组、字典不再是空值。举两个例子>>>s1=set([1,2,3,4])>>>s1{1,2,3,4}  >>>s3=set({'a':2,'b':3,'c':4})>>>s3{'c','a','b'}注:字典转为集合。需要注意的是,这里只取了字典的key,相当于把字典中的dict.keys()列表转化为set集合。集合操作1.集合添加添加集合有两种方式,分别是add和update。但是它们在添加元素时是不同的:add()方法是将要传入的元素作为一个整体添加到集合中,如:>>>s=set('one')>>>s{'e','o','n'}>>>s.add('two')>>>s{'e','two','o','n'}update()方法是传入元素of被拆分成单独的字符,存储在集合中,并删除重复的字符。可以一次添加多个值,如:>>>s=set('one')>>>s{'e','o','n'}>>>s.update('two')>>s{'e','n','t','w','o'}2.集合删除集合的删除操作使用的方法与列表相同,并且还使用了remove方法。如:setVar.remove(element)setVar:集合类型变量element:表示要查找删除的元素。作用:在集合setVar中查找element元素,存在则删除;如果找不到就报错。>>>s=set('one')>>>s{'e','o','n'}>>>s.remove('e')>>>s{'n','o'}setVar.discard(element)setVar:set类型的变量element:表示要查找删除的元素函数功能:查找元素中的元素集合setVar,存在则删除;如果没有找到,什么都不做。>>>sListset([1,2,3,4,5])>>>sList.discard(1)>>>sListset([2,3,4,5])s.pop()s:设置类型变量函数功能:删除并返回集合类型s中的一个不确定元素,如果为空,会抛出KeyError。>>>sListset([2,3,4,5])>>>sList.pop()2s.clear()s:设置类型变量函数功能:清除s集合中的所有元素>>>sListset([3,4,5])>>>sList.clear()>>>sListset([])3.集合遍历集合遍历的方法与序列遍历的方法完全一样。>>>s=set('one')>>>s{'e','o','n'}>>>foriins:print(i)......eon>>>另一种遍历方法:>>>s=set('one')>>>s{'e','o','n'}>>>foridex,iinenumerate(s):print(idex,i)......0e1o2n>>>变量idex表示元素i在集合中的索引。4、集合的其他方法由于集合的一些运算符是集合,所以会遵循集合的一些运算方法,如交集、并集、差集等。1、交集Python中求集合交集的符号是“&”",返回两个集合的公共元素的集合,即集合的交集。>>>st1=set('python')>>>st1set(['h','o','n','p','t','y'])>>>st2=set('htc')>>st2set(['h','c','t'])>>>st1&st2set(['h','t'])2.Python中的并集(collection)并集set使用符号“|”,它返回所有两个集合的一个集合,并去除重复的元素。>>>st1set(['h','o','n','p','t','y'])>>>st3=set('two')>>>st3set(['o','t','w'])>>>st1|st3set(['p','t','w','y','h','o','n'])3、Python中减法用的符号是减号“-”。>>>st1set(['1','3','2','5','4','7','6'])>>>st2=set('4589')>>>st2set(['9','8','5','4'])>>>st1-st2set(['1','3','2','7','6'])返回结果是集合st1中但不在集合st2中的元素集合。4.集合差异查看两个集合之间的差异。使用的差分函数相当于差分集。如:s1.difference(s3)这个差异是指集合s3和集合s1的差异,即由集合s1中的所有元素组成的一个新集合,而不是集合s2中的所有元素。>>>s1set([1,2,3,4,5])>>>s2set([1,2,3,4])>>>s1。差异(s2)集([5])>>>s3set(['1','8','9','5'])>>>s1.差异(s3)集([1,2,3,4,5]范围判断集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==),不等于(!=)判断一个集合是否完全包含在另一个集合中,或者使用子父集合判断函数。定义三个集合s1,s2,s3:>>>s1=set([1,2,3,4,5])>>>s2=set([1,2,3,4])>>>s3=set(['1','8','9','5'])大于(>)或大于或等于(>=)>>>s1>s2True>>>s1>s3False>>>s1>=s2True表示左集合是否完全包含右集合,比如集合s1是否完全包含集合s2。小于(<)或小于等于(<=)>>>s2>>s1>>s3>>s1==s2False>>>s2==s3False>>>s1!=s2True判断两个集合是否完全相同。不可变集合frozensetPython中还有一个不可变集合,就是frozenset,与set集合不同的是,可以在集合中添加和删除元素,集合中的内容是不可变的,类似于字符串和元组。>>>f=frozenset()>>>ffrozenset([])>>>f=frozenset('asdf')>>>ffrozenset(['a','s','d','f'])>>>f=frozenset([1,2,3,4])>>>frozenset([1,2,3,4])>>>f=frozenset((1,2,3,4))>>>>ffrozenset([1,2,3,4])>>>f=frozenset({1:2,'a':2,'c':3})>>>ffrozenset(['a',1、'c'])文渊网,仅供学习,如有侵权,请联系删除。我的公众号【Python圈】汇集了优质的技术文章和经验总结。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,600+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕学不会!还有学习交流群,一起学习进步~