基本特性和創(chuàng)建對比:
在阜平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站制作,阜平網(wǎng)站建設(shè)費(fèi)用合理。
列表:
可變的,可重復(fù)的,有序的 ,線性的
列表個(gè)體稱為元素,元素可以是任一對象
一定均勻分配每個(gè)元素的內(nèi)存存儲空間,因?yàn)樗科屏縼硭阉髟兀斜碇写娣诺亩际菙?shù)據(jù)的內(nèi)存地址,而不是數(shù)據(jù),真正的數(shù)據(jù)存放在其他地方。
元組:
不可變,可重復(fù)的,有序的,只讀的(沒有增刪改查)
元組個(gè)體稱為元素,元素可以是任一對象
對于不需要修改的序列,我們最好將其定義為元組。(因?yàn)樵M的結(jié)構(gòu)相比列表更簡單,所以它比列表更加節(jié)省內(nèi)存空間)
集合(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也會跟著變。這對以hash值為索引依據(jù)的set集合而言是不可接受的,需要頻繁的維護(hù)hash表。得不償失。
字典:
可變的,無序的,key值不重復(fù)
字典是key:value鍵值對的數(shù)據(jù)集合
創(chuàng)建字典的時(shí)候一定要注意,key一定要是可hash的數(shù)據(jù)結(jié)構(gòu),否者會拋出TypeError的異常。
字典元素的訪問:
d[key]:返回key對應(yīng)的值value,key如果不存在則拋出KeyError異常
get(key[, default]):返回key對應(yīng)的值value,但是如果key不存在則返回缺省值,如果沒有設(shè)置缺省值就返回None
setdefault(key[, default]):如果key存在,返回key對應(yīng)的值value。如果key不存在,則添加key:value對,value為default,并返回default,如果default沒有設(shè)置,缺省為None,一定要注意setdefault不能夠修改key的value,當(dāng)key存在時(shí),它只是返回key的value,并不會修改key的值。
增刪改查對比:
list:
增加和修改:
append(object) :在列表尾部追加元素,它是就地修改列表。append的時(shí)間復(fù)雜度是O(1),因?yàn)樗窃诹斜淼奈膊孔芳釉氐?,新追加的元素不會影響舊元素的內(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插入新的元素,那么該元素后面的老元素將會全部會被往后挪動一個(gè)地址空間,所以它的效率是低下的,也應(yīng)該盡量少用,否者影響代碼效率。
extend(iteratable) :就地修改,將可迭代對象的元素追加進(jìn)來,返回None,時(shí)間復(fù)雜度同樣是O(n)
(+) :連接操作,將兩個(gè)列表連接起來,產(chǎn)生一個(gè)新的列表,原列表不變。加號兩邊的數(shù)據(jù)類型一定要一致,否者就會拋出TypeError異常。+號非常的占用內(nèi)存空間。因此每使用一次加號,就相當(dāng)于生成了一個(gè)新的對象,并且在內(nèi)存中新開辟一段地址空間用于保存該對象。一旦加號使用量大了,那么這個(gè)過程就會反復(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:
dict:
增加和修改:
d[key] = value:就地修改,如果key存在,則將key對應(yīng)的值修改為value,如果key不存在則添加新的key:value對。
update([other]):就地修改,使用另一個(gè)字典的key:value對來更新本字典,如果key不存在,就添加,key存在,則覆蓋已經(jīng)存在的key對應(yīng)的值。