十、集合与其内置方法

假装没事ソ 提交于 2020-03-12 19:52:40

一、集合类型

1.作用:也是用来存多个值,但是集合主要用于:去重、关系运算

2.定义:在{}内用逗号分隔开多个元素,多个元素满足以下三个条件

1.集合元素必须为不可变类型           
2.集合内元素无序          
3.集合内元素没有重复           

s={1,2,3,4} #本质 s=set({1,2,3,4})
s={} #默认为空字典
定义空集合
s=set()

3.类型转换

s=set([1,2,3,4])     #转换列表
print(s)             #打印结果为 {1, 2, 3, 4}

s=set((5,6,7,8])     #转换元组
print(s)             #打印结果为 {5, 6, 7,8}

s=set({'name':'malin'}) #转换字典
print(s)                #打印结果为 {'name'}

s=set('malin')        #转换字符串
print(s)              #打印结果为 {'m','a','l','i','n'}

关系运算
4、内置方法
friends1={'egon','malin','a','b'} #定义两个集合一个用户一的朋友们
friends2={'egon','malin','c','d'} #一个用户二的朋友们
4.1取交集:两者共同的好友(有用 $ 或 .intersection()两种方式)

print(friends1 & friends2)   #第一种方式

print(friends1.intersection(feiends2)) #第二种

4.2取并集/合集:两者所有的好友(有用 | 或 .union()两种方式)

print(friends1 | friends2)

print(friends1.union(friends2))

4.3取差集:取friends1独有的好友(有用 - 或 .difference()两种方式)

print(friends1 - friends2)

print(friends1.difference(friends2))

4.4对称差集:取两个用户独有的好友们(有用 ^ 或 .symmetric_difference()两种方式)

print(friends1 ^ friends2)

print(friends1.symmetric_difference(friends2))

4.5父子集:包含的关系

当他们相等或者能完全包含另外一个就算是父子集

s1={1,2,3} 
s2={1,2,3}           #互为父子
print(s1=s2)        #返回True 

s1={1,2,3}   
s2={1,2}             #s1大于s2并且完全包含了s2可以称s1为父s2为子
print(s1>s2)         #返回True 

print(s1.issuperset(s2)) #判断s1是否完全包含s2(父集)是返回Trut否则返回False    


print(s2.issubset(s1))   #判断s2是否完全被包含在s1里面(子集)是返回True否则返回False

不存在包含关系,下面的比较均为False

s1={1,2,3}
s2={1,2,4}
print(s1<s2)
print(s2>s1)

去重

1、只能针对不可变类型去重
2、无法保证原来的顺序

例如:
l=['a','c','a',1,3,1,'b',2,5,'g']
print(set(l))
#打印结果为{1, 2, 3, 5, 'b', 'g', 'a', 'c'}

所以针对不可变类型去重要保留顺序,就需要我们通过循环的方式去重。

l=['a','c','a',1,3,1,'b',2,5,'g']
l1=[]
for i in l:
    if i not in l1:
        l1.append(i)
print(l1)


l2=[
    {'name':'lili','age':18,'sex':'male'},
    {'name':'jack','age':73,'sex':'male'},
    {'name':'tom','age':20,'sex':'female'},
    {'name':'lili','age':18,'sex':'male'},
    {'name':'lili','age':18,'sex':'male'},
]
l3=[]
for j in l2:
    if j not in l3:
        l3.append(j)
print(l3)

需要掌握
s={1,2,3,4,5,6,}
1、s.discard(7) #删除元素,不存在不会报错

2、s.update({1,3,5,7,9,'a','b') #更新字典,添加没有的值

3、s.pop() #随机删除

4、s.add(4) #添加值

其他内置方法
s={1,2,3,4,5,6,}
1、s.remove(7) #删除元素,不存在会报错

2、s.isdisjoint() #两个集合完全独立,没有共同部分返回True

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!