中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

重要數(shù)據(jù)結(jié)構(gòu)——list,tuple,set,dict-創(chuàng)新互聯(lián)

基本特性和創(chuàng)建對(duì)比:

成都創(chuàng)新互聯(lián)是一家專業(yè)提供鶴峰企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為鶴峰眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

列表:

可變的,可重復(fù)的,有序的 ,線性的
列表個(gè)體稱為元素,元素可以是任一對(duì)象
一定均勻分配每個(gè)元素的內(nèi)存存儲(chǔ)空間,因?yàn)樗科屏縼硭阉髟兀斜碇写娣诺亩际菙?shù)據(jù)的內(nèi)存地址,而不是數(shù)據(jù),真正的數(shù)據(jù)存放在其他地方。
  • 列表創(chuàng)建:
    lst= list()
    lst = []
    lst =list(iterable) >>> lst = list(range(5))
    lst = [2, 6, 9, 'ab']

元組:
不可變,可重復(fù)的,有序的,只讀的(沒有增刪改查)
元組個(gè)體稱為元素,元素可以是任一對(duì)象
對(duì)于不需要修改的序列,我們最好將其定義為元組。(因?yàn)樵M的結(jié)構(gòu)相比列表更簡(jiǎn)單,所以它比列表更加節(jié)省內(nèi)存空間)

  • 元組創(chuàng)建:
    t = () , t=tuple():創(chuàng)建一個(gè)空的元組
    t = tuple(range(1,7,2)) :可迭代對(duì)象iteratable
    t = (1,) :創(chuàng)建一個(gè)元素的元組注意要有個(gè)逗號(hào)
    t = (1,2,3) 6 , t =(2,3,4)+(4,5,6,7) , t = t3:元組是不可修改的,但是這里的乘號(hào)和加號(hào)表示生成一個(gè)新的元組

集合(set):

可變的,無序的,不可重復(fù)的
有序才是線性的,無序不是線性的。set集合的元素是不可以索引的,因?yàn)閟et是無序的。但是set是可以迭代,這就是為什么可索引的一定是可迭代的,但是可迭代的不一定是可索引的。
set的元素必須可以hash的。
只要是不可變類型的數(shù)據(jù)結(jié)構(gòu)都是可hash的(hashable),具體如下:
數(shù)值型int、float、complex
布爾型True、False
字符串string、bytes
tuple
None:空值也是可以hash的,因?yàn)樗且粋€(gè)常量,不可變。
為什么說可變類型的數(shù)據(jù)結(jié)構(gòu)不可hash呢?因?yàn)橹灰獢?shù)據(jù)一變,hash后的key也會(huì)跟著變。這對(duì)以hash值為索引依據(jù)的set集合而言是不可接受的,需要頻繁的維護(hù)hash表。得不償失。

  • set創(chuàng)建:
    s=set():創(chuàng)建一個(gè)空的集合(注意:s = {}是創(chuàng)建字典)
    s = set{range(1,7,2)} :可迭代對(duì)象iteratable
    s= {(2,3),23,"w",[23,4]} :錯(cuò)的!! list不可hash。

字典:

可變的,無序的,key值不重復(fù)
字典是key:value鍵值對(duì)的數(shù)據(jù)集合
創(chuàng)建字典的時(shí)候一定要注意,key一定要是可hash的數(shù)據(jù)結(jié)構(gòu),否者會(huì)拋出TypeError的異常。

  • 字典創(chuàng)建:
    d = dict() 或者d = {} :創(chuàng)建一個(gè)空字典 (d=dict(er =34) 對(duì)的 d={er=34}錯(cuò)的)
    dict(iterable, **kwarg):使用可迭代對(duì)象和name,value對(duì)構(gòu)造字典,不過可迭代對(duì)象的每一個(gè)元素都必須是一個(gè)二元結(jié)構(gòu)
    d = {'a':10, 'b':20, 'c':None, 'd':[1,2,3]}:直接窮舉法

字典元素的訪問:
d[key]:返回key對(duì)應(yīng)的值value,key如果不存在則拋出KeyError異常
get(key[, default]):返回key對(duì)應(yīng)的值value,但是如果key不存在則返回缺省值,如果沒有設(shè)置缺省值就返回None
setdefault(key[, default]):如果key存在,返回key對(duì)應(yīng)的值value。如果key不存在,則添加key:value對(duì),value為default,并返回default,如果default沒有設(shè)置,缺省為None,一定要注意setdefault不能夠修改key的value,當(dāng)key存在時(shí),它只是返回key的value,并不會(huì)修改key的值。


增刪改查對(duì)比:
list:

  • 增加和修改:
    append(object) :在列表尾部追加元素,它是就地修改列表。append的時(shí)間復(fù)雜度是O(1),因?yàn)樗窃诹斜淼奈膊孔芳釉氐模伦芳拥脑夭粫?huì)影響舊元素的內(nèi)存地址,因此它是高效的。
    列表推導(dǎo)式:[i for i in range(10)]。
    [1]10:運(yùn)算符重載。
    insert(index, object)
    :在指定索引index處插入元素object,它也是就地修改列表,因此返回值也是None,這也就意味著沒有新的列表產(chǎn)生。它的時(shí)間復(fù)雜度是O(n),因?yàn)樵诹斜碇虚g插入新的元素,那么該元素后面的老元素將會(huì)全部會(huì)被往后挪動(dòng)一個(gè)地址空間,所以它的效率是低下的,也應(yīng)該盡量少用,否者影響代碼效率。
    extend(iteratable) :就地修改,將可迭代對(duì)象的元素追加進(jìn)來,返回None,時(shí)間復(fù)雜度同樣是O(n)
    (+) :連接操作,將兩個(gè)列表連接起來,產(chǎn)生一個(gè)新的列表,原列表不變。加號(hào)兩邊的數(shù)據(jù)類型一定要一致,否者就會(huì)拋出TypeError異常。+號(hào)非常的占用內(nèi)存空間。因此每使用一次加號(hào),就相當(dāng)于生成了一個(gè)新的對(duì)象,并且在內(nèi)存中新開辟一段地址空間用于保存該對(duì)象。一旦加號(hào)使用量大了,那么這個(gè)過程就會(huì)反復(fù)重現(xiàn),快速消耗內(nèi)存。

    (x):重復(fù)操作,稱為”運(yùn)算符重載“,將列表中的每個(gè)元素重復(fù)n次,產(chǎn)生一個(gè)新的列表,原列表不變。注意:如果列表中的元素是“復(fù)雜類型(引用類型)”,即其他的數(shù)據(jù)結(jié)構(gòu)類型,那么重復(fù)的只是內(nèi)存地址,而不是真正的數(shù)據(jù),并且重復(fù)的多個(gè)內(nèi)存地址都是指向同一個(gè)數(shù)據(jù)。如果列表的元素是“單值(數(shù)字、字符串)”,則重復(fù)的就是數(shù)據(jù)本身,而不是內(nèi)存地址。**

  • 刪除::
    remove(value) :就地修改,。從左至右查找第一個(gè)匹配value的值,移除該元素,和count、index一樣,remove的時(shí)間復(fù)雜度也是O(n)的,原理一樣,因?yàn)樗瑯有枰闅v列表,從列表中先找到value,之后才能夠remove。

    pop([index]) :不指定索引index時(shí),就從列表尾部彈出一個(gè)元素,并將該元素返回給調(diào)用者。

    clear() :清空列表的所有元素,剩下一個(gè)空列表。,能不用clear就不用,盡量少用。

set:

  • 增加:
    add(elem):就地修改,增加一個(gè)元素到set中,如果增加的元素已經(jīng)在集合中存在,則什么都不做。
    update(*others):就地修改,將一個(gè)可迭代的序列合并到set集合中來,參數(shù)others必須是可迭代對(duì)象
  • 刪除:
    remove(elem):就地修改,從set中移除一個(gè)元素,若元素不存在,會(huì)拋出KeyError異常。
    discard(elem):就地修改,從set中移除一個(gè)元素,與remove不同的是,如果元素不存在則什么都不做。沒有返回值(即返回值為None)
    pop():就地修改,隨機(jī)移除集合中的某個(gè)元素,并返回該移除的元素。注意pop函數(shù)不能夠接收參數(shù),否者報(bào)語法錯(cuò)誤。如果是空集合,則返回KeyError異常
    clear():就地修改,移除集合中的所有元素。
  • 修改和查詢
  • set集合不提供元素修改方法:
    set集合中是不提供元素修改的方法的,對(duì)于一個(gè)集合,要么刪除,要么加入新的元素,沒必要修改元素。(因?yàn)榧显厥遣恢貜?fù)的)
    set集合也不提供元素查詢方法:
    因?yàn)閟et集合是非線性的數(shù)據(jù)結(jié)構(gòu),無法索引(計(jì)算機(jī)內(nèi)部還是通過hash key線性索引的,只不過對(duì)人來說是無序的。)但是可以使用for循環(huán)遍歷迭代顯示所有元素。因?yàn)閟et集合也是可迭代對(duì)象。

dict:

  • 增加和修改:
    d[key] = value:就地修改,如果key存在,則將key對(duì)應(yīng)的值修改為value,如果key不存在則添加新的key:value對(duì)。
    update([other]):就地修改,使用另一個(gè)字典的key:value對(duì)來更新本字典,如果key不存在,就添加,key存在,則覆蓋已經(jīng)存在的key對(duì)應(yīng)的值。

  • 刪除:
    pop(key[, default]):如果key存在,移除它,并返回它的value,key不存在,返回指定的default值,若default未設(shè)置,并且key不存在,則拋出KeyError異常
    popitem():隨機(jī)移除并返回一個(gè)鍵值對(duì),當(dāng)字典為empty時(shí),拋出KeyError異常
    clear():清空字典。
    del語句:del是語句,而不是函數(shù),因此使用del刪除變量名時(shí),一定要注意不要使用括號(hào)del()。del語句的作用就是用來刪除變量名的,它并沒有真正的刪除數(shù)據(jù),它的作用實(shí)際上就是在內(nèi)存中減少一個(gè)數(shù)據(jù)的引用計(jì)數(shù),python不提供給用戶直接刪除垃圾的方法,而是由GC刪除垃圾。

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

網(wǎng)站名稱:重要數(shù)據(jù)結(jié)構(gòu)——list,tuple,set,dict-創(chuàng)新互聯(lián)
路徑分享:http://www.rwnh.cn/article28/cciscp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)微信公眾號(hào)、企業(yè)建站網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站設(shè)計(jì)公司

廣告

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

外貿(mào)網(wǎng)站建設(shè)
德钦县| 北海市| 泰州市| 贵德县| 普陀区| 武胜县| 嘉义县| 唐海县| 方山县| 清河县| 女性| 苗栗市| 馆陶县| 扬州市| 伊春市| 曲周县| 昭苏县| 佛教| 鄱阳县| 台州市| 瓮安县| 应用必备| 乌鲁木齐市| 长沙市| 利川市| 长泰县| 古田县| 兴化市| 郸城县| 车险| 承德市| 博白县| 托里县| 墨江| 东明县| 安福县| 顺平县| 永登县| 鄄城县| 彭阳县| 汝州市|