Python基础---容器集合Set
集合Set(無序集合)
定義:一組包含具有唯一性元素,且無序的數(shù)據(jù)。
? ?其中的元素可以是int,float,bool,string,tuple,冰凍集合。復(fù)數(shù)等
集合中的元素,無法進(jìn)行修改
創(chuàng)建:
1、創(chuàng)建一個(gè)空集合:? set()
2、帶元素的集合:{obj1, obj2, obj3,...}
?
集合判斷:
在上述圖片中,b 是 set1 和 set2 的 交集
a + b + c 是 set1 和 set2 的 并集
? ?a 是 set1 相對(duì)于 set2 的 差集
在上述圖片中,set1 是 set2 的 超集
set2 是 set1 的 子集
set1 去除 set2 的區(qū)域 為 補(bǔ)集
?
標(biāo)準(zhǔn)操作:
1、因?yàn)闊o法定位元素,所以增刪改查都無法進(jìn)行,只能使用函數(shù)進(jìn)行增刪操作
2、成員檢測(cè)? in? &? not in
3、遍歷: for i in set()
集合推導(dǎo)式。。。
4、運(yùn)算符求交集,差集,并集,標(biāo)準(zhǔn)差集
交集: x = set1 & set2
并集: x = set1 | set2
差集: x = set1 - set2 項(xiàng)在set1中,但不在set2中
標(biāo)準(zhǔn)差集:x = set1 ^ set2 ? 項(xiàng)在set1和set2中,但是不會(huì)同時(shí)出現(xiàn)在兩者
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {4, 5, 6, 7, 8, 9} 3 print(set1 & set2) 4 --->{4, 5, 6} 5 print(set1 | set2) 6 --->{1, 2, 3, 4, 5, 6, 7, 8, 9} 7 print(set1 - set2) 8 --->{1, 2, 3} 9 print(set1 ^ set2) 10 --->{1, 2, 3, 7, 8, 9}?
基本函數(shù):
1、len()
2、max()? &? min()
3、set()
4、add()
set.add(obj)??向set中添加元素,一次只能添加一個(gè)
5、刪除元素:
set.pop() 隨機(jī)刪除一個(gè)元素
set.remove(obj) 刪除指定元素
set.discard(obj) 刪除指定元素
兩者區(qū)別在于,在刪除不存在的值時(shí),remove會(huì)報(bào)錯(cuò),discard會(huì)忽略
6、clear()
7、copy()
?
判斷函數(shù):
1、difference()
獲取存在于set1,但是不存在與set2中的數(shù)據(jù)的集合 即 差集
set1.difference(set2)
等價(jià)于 set1 - set2
2、difference_update()
更新set1,使其中的元素編程兩個(gè)集合的差集
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 set1.difference_update(set2) 4 print(set1) 5 --->{3, 4, 5, 6}3、union()
返回一個(gè)包含 set1 和 set2 所有元素,并且去重后的集合(即:并集)
set1.union(set2)
等價(jià)于 set1 | set2
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 set3 = set1.union(set2) 4 print(set3) 5 --->{1, 2, 3, 4, 5, 6, 7, 8, 9}4、update()
更新set1,使其中的元素變?yōu)?兩個(gè)集合的并集
set1.update(set2)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 set1.update(set2) 4 print(set1) 5 --->{1, 2, 3, 4, 5, 6, 7, 8, 9}5、intersection()
計(jì)算兩個(gè)set的交集? ??
set1.intersection(set2) 等價(jià)于? set1 & set2
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {4, 5, 6, 7, 8, 9} 3 new_set = set1.intersection(set2) 4 print(new_set) 5 --->{4, 5, 6}6、intersection_update()
更新set1,使其中的元素變?yōu)閮蓚€(gè)set 的交集
set1.intersection_update(set2)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {4, 5, 6, 7, 8, 9} 3 set1.intersection_update(set2) 4 print(set1) 5 --->{4, 5, 6}7、issupperset()
檢測(cè)一個(gè)set是否是另一個(gè)set的超集,返回bool
set1.issupperset(set2)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2} 3 print(set1.issuperset(set2)) 4 --->True 5 6 set2 = {1, 2, 3, 4, 5, 6} 7 print(set1.issuperset(set2)) 8 --->True 9 10 set3 = {1, 7} 11 print(set1.issuperset(set3)) 12 --->False 13 14 set4 = {1, 2, 3, 4, 5, 6, 7} 15 print(set1.issuperset(set4)) 16 --->False8、issubset()
檢測(cè)一個(gè)set是否是另一個(gè)set的子集,返回bool
set1.issupperset(set2)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2} 3 print(set2.issubset(set1)) 4 --->True9、isdisjoint()
檢測(cè)兩個(gè)set是否不相交,返回bool,相交False,不相交True
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 print(set1.isdisjoint(set2)) 4 --->False10、symmetric_difference()
返回兩個(gè)集合的對(duì)稱差集(即 并集 - 交集)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 print(set1.symmetric_difference(set2)) 4 --->{3, 4, 5, 6, 7, 8, 9}11、symmetric_difference_update()
set1.symmetric_difference_update(set2)
更新set1,使其中元素變?yōu)閮蓚€(gè)set 的對(duì)稱差集
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = {1, 2, 7, 8, 9} 3 set1.symmetric_difference_update(set2) 4 print(set1) 5 --->{3, 4, 5, 6, 7, 8, 9}?
冰凍集合Frozenset:
定義:一種特殊的集合類型,也是集合,就像Tuple之于List一樣,Frozenset之于Set
較之于Set,其中元素?zé)o法進(jìn)行修改
創(chuàng)建:
1、空冰凍集合:frozenset()? ?
但一般不推薦創(chuàng)建空的,因?yàn)闊o法更改
2、帶數(shù)據(jù):frozenset(seq)
seq可以是 list,tuple,set等容器類數(shù)據(jù)
1 set1 = {1, 2, 3, 4, 5, 6} 2 set2 = frozenset(set1) 3 print(set2, type(set2)) 4 --->frozenset({1, 2, 3, 4, 5, 6}) <class 'frozenset'>?
基本操作:
1、成員檢測(cè)? in & not in
2、遍歷: for i in frozenset()
? 集合推導(dǎo)式得到的結(jié)果,不是一個(gè)冰凍集合,取決于使用哪種括號(hào)
相關(guān)函數(shù):
冰凍集合Frozenset可以使用集合Set的相關(guān)函數(shù),但是局限于是否修改集合本身
冰凍集合無法修改元素
轉(zhuǎn)載于:https://www.cnblogs.com/lambs/p/8472914.html
總結(jié)
以上是生活随笔為你收集整理的Python基础---容器集合Set的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协同旋转不变网格形变
- 下一篇: 日常杂记--5