Python中的集合:set與frozenset用法舉例
【1】建立:
從list或tuple中建立,我就會這兩種。不能從數字直接建立:a=set(1)錯誤!
1.sa=set(列表)
2.sa=set(tuple)
程式碼:
【2】交集
sc = sa & sb
sc=sa.intersection(sb)
sc=sb.intersection(sa)
三種是等價的
將交集賦值給當前集合:
sa=sa & sb --- 不推薦
sa.intersection_update(sb) --貌似是原位操作,消耗少。推薦
【3】並集
sc=sa|sb
sc=sa.union(sb)
sc=sb.union(sa)
將並集賦值給當前集合: sa.update(sb)
【4】集合之差
屬於集合A但不屬於集合B
cs=sa-sb
sc=sa.difference(sb)
將集合之差賦值給原集合:
sa=sa-sb
sa.difference_update(sb)
【6】集合之差的並集。
sc= sa ^ sb 相當於 (sa-sb)|(sb-sa)
sc=sa.symmetric_difference(sb)
sc=sb.symmetric_difference(sa)
賦值給原集合:
sa.symmetric_difference_update(sb)
【7】
更改元素:
a.add(XXX)
a.pop() --隨機刪除
a.remove(XX) 刪除XX,XX必須存在,否則出錯
a.discard(XX) 刪除XX,XX若不存在,則do nothing
a.clear() --情空
【8】
判斷
sa.issuperset(sb) 若sa包含sb,返回True 相當於 sa>=sb (sa>sb 真包含)
sa.issubset(sb) 若sa包含於sb,返回True 相當於 sa<=sb
sa.isdisjoint(sb) 若sb&sa==set([]),返回True
【9】frozenset:元素一經建立,不可增加、刪除和修改。因此沒有add、pop、discard、remove和所有以_update結尾的方法。但可以作為左值接受賦值。
frozenset和set混合運算時,返回的值以左邊的操作變數為準。
frozenset(a) | set(b) 的返回值就是frozenset,
set(a) | frozenset(b) 的返回值就是set
參考資料:
1.官方文件