Python之集合
阿新 • • 發佈:2018-03-30
itself card idt tuple join ember 線性 intersect 屬於
集合性質:
可變的,無序的,不重復的元素集合
集合定義
s = set() s = set(range(10)) #set(iterable)
集合元素
set的元素要求必須可以hash 目前學過的不可hash的類型有list、set 元素不可以索引 set可以叠代
集合的method
add(elem) 增加一個元素到set中 如果元素存在,什麽都不做 update(*others) #Update a set with the union of itself and others 合並其他元素到set集合中來 參數others必須是可叠代對象 就地修改 remove(elem) #Remove an element from a set; it must be a member 從set中移除一個元素 元素不存在,拋出KeyError異常。為什麽是KeyError? discard(elem) 從set中移除一個元素 元素不存在,什麽都不做 pop() -> item 移除並返回任意的元素。為什麽是任意元素? 空集返回KeyError異常 clear() 移除所有元素
線性結構
線性結構的查詢時間復雜度是O(n),即隨著數據規模的增大而增加耗時 set、dict等結構,內部使用hash值作為key,時間復雜度可以做到O(1),查詢時間和數據規模無關
可hash:不可變
數值型int、float、complex 布爾型True、False 字符串string、bytes tuple None 以上都是不可變類型,成為可哈希類型,hashable
集合基本概念
全集 所有元素的集合。例如實數集,所有實數組成的集合就是全集 子集subset和超集superset 一個集合A所有元素都在另一個集合B內,A是B的子集,B是A的超集 真子集和真超集 p A是B的子集,且A不等於B,A就是B的真子集,B是A的真超集 並集:多個集合合並的結果 交集:多個集合的公共部分 差集:集合中除去和其他集合公共部分
並集
將兩個集合A和B的所有的元素合並到一起,組成的集合稱作集合A與集合B的並集 union(*others) 返回和多個集合合並後的新的集合 |:運算符重載 等同union update(*others) 和多個集合合並,就地修改 |= 等同update
交集
集合A和B,由所有屬於A且屬於B的元素組成的集合 intersection(*others) 返回和多個集合的交集 & 等同於intersection intersection_update(*others) 獲取和多個集合的交集,並就地修改 &= 等同於intersection_update
差集
集合A和B,由所有屬於A且不屬於B的元素組成的集合 difference(others) 返回和多個集合的差集 - 等同於difference difference_update(others*) 獲取和多個集合的差集並就地修改 -= 等同difference_update
對稱差集
集合A和B,由所有不屬於A和B的交集元素組成的集合,記作(A-B)∪(B-A) symmetric_differece(other) 返回和另一個集合的差集 ^ 等同於symmetric_differece symmetric_differece_update(other) 獲取和另一個集合的差集並就地修改 ^= 等同symmetric_differece_update
集合運算
issubset(other)、<= p 判斷當前集合是否是另一個集合的子集 set1 < set2 判斷set1是否是set2的真子集 issuperset(other)、>= 判斷當前集合是否是other的超集 set1 > set2 判斷set1是否是set的真超集 isdisjoint(other) 當前集合和另一個集合沒有交集 沒有交集,返回True
Python之集合