跟着ALEX 学python day3集合
声明 :
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}

更多精彩