声明 :

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

文档内容学习于

http://www.cnblogs.com/xiaozhiqi/ 

 

一、 集合

集合是一个无序的,不重复的数据组合,主要作用如下

1.去重 把一个列表变成集合 ,就自动去重了

2.关系测试,测试2组数据的之前的交集,差集,并集等关系

 

 

去重,直接将列表变成集合

[root@master day3]# cat set.py 
#!/usr/bin/env python3
list = [1,2,5,8,5,6,7,7]
list = set(list)
print (list,type(list))


[root@master day3]# ./set.py 
{1, 2, 5, 6, 7, 8} <class 'set'>   #直接去重了

 

交集, intersection 。 就是将2个列表中,相同的取出来

下面list 和list2中    5和 8是重复,可以直接将他们取出。

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)
list2 = set([5,555,256,777,8])
print ( list.intersection(list2))


[root@master day3]# ./set.py 
{8, 5}

 

 

并集(合集), union  2个列表合并去重

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)
list2 = set([5,555,256,777,8])
print ( list.union(list2))


[root@master day3]# ./set.py 
{256, 1, 2, 5, 6, 7, 8, 777, 555}

 

 

差集,difference  就是2个列表,对比。打印独有部分

[root@master day3]# cat ./set.py 
#!/usr/bin/env python3
list = [1,2,5,8,5,6,7,7]
list = set(list)
list2 = set([5,555,256,777,8])
print ( list.difference(list2))    #将list和list2对比。打印只有list中独有的部分


[root@master day3]# ./set.py  
{1, 2, 6, 7}

 

 

对称差集

就是将2个列表中,相互没有的都取出来了。

[root@master day3]# cat ./set.py 
#!/usr/bin/env python3
list = [1,2,5,8,5,6,7,7]
list = set(list)
list2 = set([5,555,256,777,8])
print ( list.symmetric_difference(list2))



[root@master day3]# ./set.py 
{256, 1, 2, 6, 7, 777, 555}

 

 

 

 

 

 

 

 

子集,父集

是否存在包含的关系

[root@master day3]# cat ./set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list3 = set([1,7])

list = set(list)
list2 = set([5,555,256,777,8])


print ( list.issubset(list2))                       #子集,是否被包含
print ( list3.issubset(list))
print ( list.issuperset(list2))                     #父集,是否包含
print ( list.issuperset(list3))


[root@master day3]# ./set.py 
False
True
False
True

 

 

判断是否有交集  isdisjoint

如果2个列表没有交集, 就返回ture。

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)
list2 = set([5,555,256,777,8])
list3 = set([1,6])
print ( list3.isdisjoint(list))
print ( list3.isdisjoint(list2))

[root@master day3]# ./set.py 
False
True

 

 

 

也可以使用以下字符串进行操作

s | t   s和t的并集
s & t   s和t的交集
s - t   求差集
s ^ t   求对称差集
len(s)  集合中项数
max(s)  最大值
min(s)  最小值

 

添加 

add  添加一项

[root@master day3]# cat set.py 
#!/usr/bin/env python3

list = [1,2,5,8,5,6,7,7]
list = set(list)
list.add("ssdd")


print ( list )
[root@master day3]# ./set.py 
{1, 2, 5, 6, 7, 8, 'ssdd'}

 

update 添加多项

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)
list.update([555,666,888])
print ( list )


[root@master day3]# ./set.py 
{1, 2, 5, 6, 7, 8, 555, 888, 666}

 

 

删除

remove,因为集合本生就是去重的,所以,删除的话。就是都删除了 。

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)
list.remove(2)
print ( list )


[root@master day3]# ./set.py 
{1, 5, 6, 7, 8}

 

pop  随机删除 。

[root@master day3]# cat set.py 
#!/usr/bin/env python3

list = [1,2,5,8,5,6,7,7]
list = set(list)
list.pop()
print (list)


[root@master day3]# ./set.py 
{2, 5, 6, 7, 8}

 

 

discard

也是删除,和remove相似,但是remove指定一个不存在的值的时候会报错、discard不会报错

[root@master day3]# cat set.py 
#!/usr/bin/env python3


list = [1,2,5,8,5,6,7,7]
list = set(list)


list.discard(555)               #指定不存在的值,程序也不会报错。
list.discard(8)

print (list)




[root@master day3]# ./set.py 
{1, 2, 5, 6, 7}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄