1. 程式人生 > >Python中的集合:set與frozenset用法舉例

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.官方文件