您好,登錄后才能下訂單哦!
集合set
去重的,可變的,可迭代的,無序的 元素集合
set的元素必須是可hash的
約定
set翻譯為集合
collection 翻譯為集合類型,是一個大概念
set定義 初始化
set() -> new empty set object
set(iterable) -> new set object
s1 = set() #空set s2 = set(range(5)) s3 = set(list(range(10))) s4 = {} # 空{}是空字典(dict)不是空set s5 = {9 ,10, 11} # set s6 = {(1,2) , 3, 'a'} s7 = {[1],(1,),1} # 報錯:[1] 是unhashable type: 'list'
set的元素
set 的元素要求必須是可hash的
目前學過的不可hash的類型有list,set,bytearray
元素不可以索引
set 可以迭代
set增加
add(elem) -> None
增加一個元素到set中
如果元素存在,什么都不做(set的去重性質)
update( * others) -> None
合并其他元素到set集合中來
參數others必須是可迭代對象,可以是多個用逗號隔開
就地修改
set刪除
remove(elem) -> None
從set中移除一個元素
元素不存在,拋出keyError異常
discard(elem) -> None
從set中移除一個元素
元素不存在什么都不做
pop() -> item
移除并返回任意的元素.(類似隨機的)
空集合返回keyError異常
clear()
移除所有元素
set 修改,查詢
修改:
要么刪除,要么加入新的元素
查詢:
非線性結構,無法索引
遍歷:
可以迭代所有元素
成員運算符
in 和 not in 判斷元素是否在set中
效率為 O(1) ### list,tuple等用成員運算符時,效率為O(n)
set 和線性結構
線性結構的查詢時間復雜度是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的超集
真子集和真超集: A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集
并集: 多個集合合并的解構
交集: 多個集合的公共部分
差集: 集合中除去和其他集合公共部分
集合運算
并集
將兩個集合A和B的所有的元素合并到一起,組成的集合稱作集合A與集合B的并集
set.union(*others)
返回和多個集合合并后的新的集合
| 運算符重載
等同union
set.update(*others) -> None
和多個集合合并,就地修改
|= -> None
等同update
交集
集合A和B,由所有屬于A且屬于B的元素組成的集合
set.intersection(* others)
返回和多個集合的交集
&
等同intersection
set.intersection_update(*others) -> None
獲取和多個集合的交集,并就地修改
&= -> None
等同intersection_update
差集
集合A和B,由所有屬于A且不屬于B的元素組成的集合
set.differentce(*others)
返回和多個集合的差集
-
等同difference
set.difference_update(*others)
獲取和多個合集的差集并就地修改
-=
等同difference_update(*others)
對稱差集
集合A和B,由所有不屬于A和B的交集元素組成的集合,基座(A-B)U(B-A)
symmetric_difference(other)
返回和另一個集合的差集
^
等同symmetric_difference(other)
symmetric_difference_update(other)
獲取和另一個集合的差集并就地修改
^=
等同symmetric_difference_update
集合判斷
set.issubset(other), <=
判斷當前集合是否是other的子集
set1 < set2
判斷set1 是否是set2 的真子集
set.issuperset(other) >=
判斷當前集合是否是other的超集
set1 > set2
判斷set1 是否是 set2 的真超集
set.isdisjoint(other)
當前集合和另一個集合沒有交集
沒有交集,返回True
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。