Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set,集合運算-創(chuàng)新互聯(lián)

集合set

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元徐聞做網(wǎng)站,已為上家服務(wù),為徐聞各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108

去重的,可變的,可迭代的,無序的 元素集合

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 = {} # 空{(diào)}是空字典(dict)不是空set
s5 = {9 ,10, 11} # set
s6 = {(1,2) , 3, 'a'}
s7 = {[1],(1,),1}  # 報錯:[1] 是unhashable type: 'list'

set的元素

  • set 的元素要求必須是可hash的

  • 目前學過的不可hash的類型有l(wèi)ist,set,bytearray

  • 元素不可以索引

  • set 可以迭代

set增加

  • add(elem) -> None

  •     增加一個元素到set中

  •     如果元素存在,什么都不做(set的去重性質(zhì))

  • update( * others)  -> None

  •     合并其他元素到set集合中來

  •     參數(shù)others必須是可迭代對象,可以是多個用逗號隔開

  •     就地修改

set刪除

  • remove(elem) -> None

  •     從set中移除一個元素

  •     元素不存在,拋出keyError異常

  • discard(elem) -> None

  •     從set中移除一個元素

  •     元素不存在什么都不做

  • pop() -> item

  •     移除并返回任意的元素.(類似隨機的)

  •     空集合返回keyError異常

  • clear()

  •     移除所有元素

set 修改,查詢

修改:

  • 要么刪除,要么加入新的元素

查詢:

  • 非線性結(jié)構(gòu),無法索引

遍歷:

  • 可以迭代所有元素

成員運算符

  •     in 和 not in 判斷元素是否在set中

  •     效率為 O(1)  ### list,tuple等用成員運算符時,效率為O(n)

set 和線性結(jié)構(gòu)

  • 線性結(jié)構(gòu)的查詢時間復(fù)雜度是O(n),隨著數(shù)據(jù)規(guī)模的增大而增加耗時

  • set,dict等結(jié)構(gòu),內(nèi)部使用hash值作為Key,時間復(fù)雜度可以做到O(1),查詢時間和數(shù)據(jù)規(guī)模無關(guān)

可hash

  •     數(shù)值型int,float,complex

  •     布爾型 True,False

  •     字符串 string,bytes

  •     tuple

  •     None

  •     以上都是不可變類型,稱為可哈希類型,hashable


集合

基本概念

  • 全集: 所有元素的集合.例如實數(shù)集,所有實數(shù)組成的集合就是全集

  • 子集subset和超集superset: 一個集合A所有的元素都在另一個集合B內(nèi),A是B的子集,B是A的超集

  • 真子集和真超集: A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集

  • 并集: 多個集合合并的解構(gòu)

  • 交集: 多個集合的公共部分

  • 差集: 集合中除去和其他集合公共部分


集合運算

并集

將兩個集合A和B的所有的元素合并到一起,組成的集合稱作集合A與集合B的并集

  • set.union(*others)

        返回和多個集合合并后的新的集合

  • | 運算符重載

        等同union

  • set.update(*others) -> None

        和多個集合合并,就地修改

  • |= ->  None

        等同update

Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set ,集合運算

交集

集合A和B,由所有屬于A且屬于B的元素組成的集合

  • set.intersection(* others)

        返回和多個集合的交集

  • &

        等同intersection

  • set.intersection_update(*others) -> None

        獲取和多個集合的交集,并就地修改

  • &= -> None

        等同intersection_update

Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set ,集合運算

差集

集合A和B,由所有屬于A且不屬于B的元素組成的集合

  • set.differentce(*others)

        返回和多個集合的差集

  • -

        等同difference

  • set.difference_update(*others)

        獲取和多個合集的差集并就地修改

  • -=

        等同difference_update(*others)

Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set ,集合運算

對稱差集

集合A和B,由所有不屬于A和B的交集元素組成的集合,基座(A-B)U(B-A)

  • symmetric_difference(other)

        返回和另一個集合的差集

  • ^

        等同symmetric_difference(other)

  • symmetric_difference_update(other)

        獲取和另一個集合的差集并就地修改

  • ^=

        等同symmetric_difference_update

Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set ,集合運算

集合判斷

  • set.issubset(other), <=

        判斷當前集合是否是other的子集

  • set1 < set2

        判斷set1 是否是set2 的真子集

  • set.issuperset(other) >=

        判斷當前集合是否是other的超集

  • set1 > set2

        判斷set1 是否是 set2 的真超集

  • set.isdisjoint(other)

        當前集合和另一個集合沒有交集

    沒有交集,返回True

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)——集合set,集合運算-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://muchs.cn/article42/hcgec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、Google、外貿(mào)建站、網(wǎng)站改版用戶體驗、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)