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

Python-DataType-Collection

时间:2023-03-26 18:17:32 Python

DataType-CollectionCollection也是python的容器类型之一。已经用{}包裹起来,元素之间用.隔开。集合最大的特点是容器类的元素不重复。元素是无序的,其基本用法包括成员检测和消除重复元素。集合对象还支持并、交、差、对称差等数学运算。1、特征集中的元素不重复:一般用于列表去重。集合中的元素是无序的:一般不用于索引检索不能使用{}创建一个空值集合,使用set()函数示例s1={10,20,30,40,50}print(s1)#结果:{40,10,50,20,30}s2={10,30,20,10,30,40,30,50}print(s2)#结果:{40,10,50,20,30}s3=set('abcdefg')print(s3)#result:{'d','f','b','e','g','c','a'}s4=set()print(type(s4))#结果:s5={}print(type(s5))#结果:2。2.1对集合的常用操作add():向集合中添加数据s1={10,20}s1.add(100)s1.add(10)print(s1)#Result:{100,10,20}因为集合具有去重功能,如果添加到集合中的数据是当前集合中已有的数据,则不会进行任何操作。update():,添加的数据是序列s1={10,20}#s1.update(100)#Error#错误信息:TypeError:'int'objectisnotiterables1.update([100,200])s1.update('abc')print(s1)#Result:{100,200,10,'a',20,'c','b'}2.2删除数据remove():删除集合中的指定数据,如果数据不存在,则会报错。s1={10,20}s1.remove(10)print(s1)#{20}s1.remove(10)#Error#结果:KeyErrorprint(s1)discard():删除集合中的指定数据,如果数据不存在,不会报错。s1={10,20}s1.discard(10)print(s1)#Result:{20}s1.discard(10)print(s1)#Result:{20}pop():随机删除其中一条集合数据,并返回此数据。s1={10,20,30,40,50}del_num=s1.pop()print(del_num)#结果:40print(s1)#{10,50,20,30}2.3Judginginandnotin:判断元素集合中是否存在,存在则返回True,不存在则返回Falses1={10,20,30,40,50}print(10ins1)#Result:Trueprint(10notins1)#Result:False3集合的数学运算union():也可以用符号|表示,两个集合的并集是一个新的集合,集合中的每个元素至少是其中一个集合的成员,即属于两个集合之一的成员s1={10,20,30,40,50}s2={100,20,50,60,80}print(s1.union(s2))print(set(s1|s2))#Result:{100,40,10,80,50,20,60,30}#结果:{100,40,10,80,50,20,60,30}intersection():也可以用符号&表示,交集运算可以类比做集合的AND(或合取)运算。两个集合的交集是一个新集合,这个集合中的每个元素同时是两个集合的成员,即同时属于两个集合的成员s1={10,20,30,40,50}s2={100,20,50,60,80}print(s1.intersection(s2))print(set(s1&s2))#result:{50,20}#result:{50,20}difference():也可以使用符号-表示差分集的两个集合(s和t)的差分或相对补集指的是一个集合c。这个集合中的元素只属于集合s,不属于集合t。使用时注意顺序s1={10,20,30,40,50}s2={100,20,50,60,80}print(s1.difference(s2))print(set(s1-s2))#{40,10,30}#{40,10,30}print(s2.difference(s1))print(set(s2-s1))#{80,100,60}#{80,100,60}symmetric_difference(),也有效由符号^表示,异或两个集合(s和t)的对称差指的是另一个集合c,这个集合中的元素只能是集合s或集合t的成员,并且不能同时属于两个集合。s1={10,20,30,40,50}s2={100,20,50,60,80}print(s1.symmetric_difference(s2))print(set(s1^s2))#{80,100,40,10,60,30}#{80,100,40,10,60,30}