python-set集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-set集合相关的知识,希望对你有一定的参考价值。

简介

set是一个无序且不重复的元素集合

s1=set()                   #创建一个空的set集合
s2=set(‘python‘)           #创建一个非空的set集合
print (type(s1))

-----结果-----
<type ‘set‘>

注意:如果想要在set集合中加入多个元素,不可使用set(‘python‘,‘java‘),应该用一个列表的形式加入,如:

s1=set([‘java‘,‘java‘,‘python‘])
print (s1)

-----结果-----
{‘java‘, ‘python‘}       #set中把‘java‘去重

在set这个类中,有以下几种方法:

技术分享

 

一、添加add()

s1=set()
s1.add(‘python‘)
print (s1)
s1.add(‘python‘)
print (s1)
s1.add(‘c‘)
print (s1)

-----结果----
{‘python‘}           
{‘python‘}                  #set是一个不重复的集合,第二次添加的时候不会再次插入
{‘c‘, ‘python‘}

  

 

二、清空clear()

s1=set()
s1.add(‘python‘)
s1.clear()
print (s1)

-----结果-----
set()

  

三、拷贝copy()

s1=set()
s1.add(‘python‘)
s2=s1.copy()
print (s2)

-----结果-----
{‘python‘}

 

四、对比difference()与difference_update

difference()的作用是把两个set集合进行对比,把对比的结果放入到一个新的集合中,如

s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=s1.difference(s2)
print(s3)

-----结果-----
{‘python‘}

注意:使用difference()时,两个集合比较,只会把前一个集合中存在且后一个集合中不存在的元素放入一个新集合中

 

difference_update()简单地说,就是两个集合比较,在第一个集合中,去除两个集合相同的部分。此方法是在第一个集合中操作,不会重新产生一个新的集合

s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=s1.difference_update(s2)
print (s1)
print (s3)

-----结果-----
{‘python‘}
None

 

五、移除discard()、pop()、remove()

区别:

  discard(x):从集合中删除元素x,如存在,则删除,如不存在,则不做操作

  pop():从集合中删除一个元素,且可把删除的元素重新赋值给一个新变量

  remove(x):从集合中删除元素x,如存在,则删除,如不存在,则报错

#discard()
s1=set([‘python‘,‘java‘])
s1.discard(‘java‘)
print (s1)
-----结果-----
{‘python‘}


#pop()
s1=set([‘python‘,‘java‘])
s2=s1.pop()
print (s1)
print (s2)
-----结果-----
{‘java‘}
python


#remove
s1=set([‘python‘,‘java‘])
s1.remove(‘java‘)
print (s1)
-----结果-----
{‘python‘}

  

六、取交集intersection()与intersection_update()

#intersection()
s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=s1.intersection(s2)
print (s1)
print (s2)
print (s3)
-----结果-----
{‘python‘, ‘java‘}
{‘java‘, ‘c‘}
{‘java‘}


#intersection_update()
s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=s1.intersection_update(s2)
print (s1)
print (s2)
print (s3)
-----结果-----
{‘java‘}
{‘c‘, ‘java‘}
None

intersection()与intersection_update()的区别同样在于是否会生成一个新的集合

 

七、判断是否有交集isdisjoint()

s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
print (s1.isdisjoint(s2))           #如果没有交集,会返回True

-----结果-----
False                   

 

八、判断是否是子集issubset()

s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=set([‘java‘])                     #注意此处不能写s3=set(‘java‘)
print (s2.issubset(s1))
print (s3.issubset(s1))

-----结果-----
False
True

 

九、判断是否是父集issuperset()

s1=set([‘java‘,‘python‘])
s2=set([‘java‘,‘c‘])
s3=set([‘java‘])
print (s1.issuperset(s2))
print (s1.issuperset(s3))

-----结果-----
False
True

 

十、差集ymmetric_difference()与ymmetric_difference_update()

#symmetric_difference
s1=set([‘python‘,‘java‘])
s2=set([‘python‘,‘c‘])
s3=s1.symmetric_difference(s2)
print (s1)
print (s2)
print (s3)
-----结果-----
{‘java‘, ‘python‘}
{‘c‘, ‘python‘}
{‘c‘, ‘java‘}


#symmetric_difference_update
s1=set([‘python‘,‘java‘])
s2=set([‘python‘,‘c‘])
s3=s1.symmetric_difference_update(s2)
print (s1)
print (s2)
print (s3)
-----结果-----
{‘java‘, ‘c‘}
{‘python‘, ‘c‘}
None

两者的区别还是在是否会生成一个新的集合

 

十一、并集union()

s1=set([‘python‘,‘java‘])
s2=set([‘python‘,‘c‘])
s3=s1.union(s2)
print (s1)
print (s2)
print (s3)

-----结果-----
{‘python‘, ‘java‘}
{‘python‘, ‘c‘}
{‘c‘, ‘python‘, ‘java‘}

 

十二、更新update()

s1=set([‘python‘,‘java‘])
s2=set([‘python‘,‘c‘])
s3=s1.update(s2)
print (s1)
print (s2)
print (s3)

-----结果-----
{‘python‘, ‘java‘, ‘c‘}
{‘python‘, ‘c‘}
None

 

以上是关于python-set集合的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现集合操作

laravel特殊功能代码片段集合

金蝶handler中 collection 代码片段理解

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]