標籤:去除 blog copy height color 返回 賦值 注意 重複
簡介
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#removes1=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))-----結果-----FalseTrue
九、判斷是否是父集issuperset()
s1=set([‘java‘,‘python‘])s2=set([‘java‘,‘c‘])s3=set([‘java‘])print (s1.issuperset(s2))print (s1.issuperset(s3))-----結果-----FalseTrue
十、差集ymmetric_difference()與ymmetric_difference_update()
#symmetric_differences1=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_updates1=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集合