第八章、列表與字典

列表

列表是Python中最具靈活性的有序集合對(duì)象類(lèi)型领跛。

Python列表是:

任意對(duì)象的有序集合

通過(guò)偏移讀取

可變長(zhǎng)度腹侣、異構(gòu)以及任意嵌套

屬于可變序列的分類(lèi)

對(duì)象引用數(shù)組

實(shí)際應(yīng)用中的列表

1叔收、基本列表操作:

由于列表是序列,它支持很多與字符串相同的操作傲隶。

2饺律、列表迭代和解析:

3、索引跺株、分片和矩陣:

由于列表都是序列复濒,對(duì)于列表而言,索引和分片操作與字符串中的操作基本相同乒省。

4巧颈、原處修改列表:

由于列表是可變的,他們支持原處改變列表對(duì)象的操作袖扛。

①砸泛、索引與分片的賦值:

當(dāng)時(shí)用列表的時(shí)候,可以將它賦值給一個(gè)特定項(xiàng)(偏移)或整個(gè)片段(分片)來(lái)改變它的內(nèi)容蛆封。

索引和分片的賦值都是原地修改唇礁,它們對(duì)列表進(jìn)行直接修改,而不是生成一個(gè)新的列表作為結(jié)果惨篱。

②盏筐、列表方法調(diào)用:

列表方法append:簡(jiǎn)單地將一個(gè)單項(xiàng)(對(duì)象引用)加至列表末端。

列表方法sort:原地對(duì)列表進(jìn)行排序砸讳。

列表方法reverse:可原地反轉(zhuǎn)列表琢融。

列表方法extend:能夠在末端插入多個(gè)元素界牡。

列表方法pop:能夠在末端刪除一個(gè)元素。

列表方法remove:通過(guò)值刪除某元素漾抬。

列表方法insert:在偏移處插入某元素宿亡。

列表方法index:查找某元素的偏移。

內(nèi)置函數(shù)sorted和reversed作用同上奋蔚。

③她混、其他常見(jiàn)列表操作:

1、由于列表是可變的泊碑,你可以用del語(yǔ)句在原處刪除某項(xiàng)或某片段。

2毯欣、因?yàn)榉制x值是刪除外加插入操作馒过,也可以通過(guò)將空列表賦值給分片來(lái)刪除列表片段(L[i:j]=[])。

字典

除了列表以外酗钞,字典(dictionary)也許是Python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類(lèi)型腹忽。如果把列表看做是有序的對(duì)象集合,那么就可以把字典當(dāng)成是無(wú)序的集合砚作。

python字典的主要屬性如下:

①窘奏、通過(guò)鍵而不是偏移量來(lái)讀取:

②葫录、任意對(duì)象的無(wú)序集合:

③着裹、可變長(zhǎng)、異構(gòu)米同、任意嵌套:

④骇扇、屬于可變映射類(lèi)型:

⑤、對(duì)象引用表(散列表):

實(shí)際應(yīng)用中的字典

字典通過(guò)鍵進(jìn)行索引面粮,被嵌套的字典項(xiàng)是由一系列索引(方括號(hào)中的鍵)表示的少孝。

1、字典的基本操作:

內(nèi)置len函數(shù)也可用于字典熬苍,它能夠返回存儲(chǔ)在字典里的元素的數(shù)目稍走,或者說(shuō)是其keys列表的長(zhǎng)度,這二者是等價(jià)的柴底。

字典的has_key方法以及in成員關(guān)系操作符提供了鍵存在與否的測(cè)試方法婿脸,keys方法則能夠返回字典中所有的鍵,將它們收集在一個(gè)列表中似枕。

2盖淡、原處修改字典:

與列表相同,字典也是可變的凿歼,因此可以在原處對(duì)它們進(jìn)行修改褪迟、擴(kuò)展以及縮短而不需要生成新字典冗恨。

del語(yǔ)句在這里也適用。它刪除作為索引的鍵相關(guān)聯(lián)的元素味赃。

3掀抹、其他字典方法:

字典方法提供了多種工具。例如心俗,字典values和items方法分別返回字典的值列表和(key傲武,value)對(duì)元組。

讀取不存在的鍵往往都會(huì)出錯(cuò)城榛,然而鍵不存在時(shí)通過(guò)get方法能夠返回默認(rèn)值(None或者用戶(hù)定義的默認(rèn)值)揪利。

字典的update帆帆有點(diǎn)類(lèi)似于合并,但是狠持,它和從左到右的順序無(wú)關(guān)疟位。它把2一個(gè)字典的鍵和值合并到另一個(gè)字典中,盲目地覆蓋相同的鍵值喘垂。

字典的pop方法能夠從字典中刪除一個(gè)鍵并返回它的值甜刻。

4、語(yǔ)言表:

就任何字典D而言正勒,寫(xiě)成for key in D:和寫(xiě)成完整的key in D.keys():效果是一樣的得院。

5、字典用法的注意事項(xiàng):

·序列運(yùn)算無(wú)效章贞。

·對(duì)新索引賦值會(huì)添加項(xiàng)祥绞。

·鍵不一定總是字符串。

①阱驾、使用字典模擬靈活的列表:

②就谜、字典用于稀疏數(shù)據(jù)結(jié)構(gòu):

③、避免missing-key錯(cuò)誤:

④里覆、使用字典作為記錄:

6丧荐、創(chuàng)建字典的其他方法:

①、{'name':'mel','age':45}

②喧枷、D={} ?D['name']='mel? D['age']=45

③虹统、dict(name='mel',age=45)

④、dict([('name','mel'),('age',45)])

這四種形式都會(huì)建立相同的兩鍵字典隧甚,但它們?cè)诓煌臈l件下有用:

①车荔、如果你可以事先拼出整個(gè)字典,那么第一種是很方便的戚扳。

②忧便、如果你需要一次動(dòng)態(tài)地建立字典的一個(gè)字段,第二種比較合適帽借。

③珠增、第三種關(guān)鍵字形式所需的代碼比常量少超歌,但是鍵必須都是字符串才行。

④蒂教、如果你需要在程序運(yùn)行時(shí)把鍵和值逐步建成序列巍举,那么最后一種形式比較有用。

如果所有鍵的值都相同凝垛,你也可以用這個(gè)特殊的形式對(duì)字典進(jìn)行初始化——簡(jiǎn)單地傳入一個(gè)鍵列表懊悯,以及所有鍵的初始值(默認(rèn)值為空):

>>>dict.fromkeys(['a','b'],0)

7、Python3.0中字典的變化:

①梦皮、支持一種新的字典解析表達(dá)式炭分,這是列表和集合解析的“近親”。

②届氢、對(duì)于D.key欠窒、D.values和D.items方法,返回可迭代的視圖退子,而不是列表。

③型将、由于前一點(diǎn)寂祥,需要新的編碼方式通過(guò)排序鍵來(lái)遍歷。

④七兜、不再直接支持相對(duì)大小比較——取而代之的是手動(dòng)比較丸凭。

⑤、不再有D.has_key方法——相反腕铸,使用in成員關(guān)系測(cè)試惜犀。

在Python3.0中的字典有什么新特性:

①、字典解析:

Python3.0中的字典可以用字典解析來(lái)創(chuàng)建狠裹。如下代碼使用對(duì)應(yīng)結(jié)果中的每一個(gè)鍵/值對(duì)構(gòu)建了一個(gè)新的字典:

>>>D={k:v for (k,v) in zip(['a','b','c'],[1,2,3])}

②虽界、字典視圖:

在Python3.0中,字典的keys涛菠、values和items都返回視圖對(duì)象莉御,而Python2.6中,它們返回實(shí)際的結(jié)果列表俗冻。

Python3.0中的字典視圖并非創(chuàng)建后不能改變——它們可以動(dòng)態(tài)地反映在視圖對(duì)象創(chuàng)建之后對(duì)字典做出的修改礁叔。

③、字典視圖和集合:

與Python2.X中的列表結(jié)果不同迄薄,keys方法所返回的Python3.0的視圖對(duì)象類(lèi)似于集合琅关,并且支持交集和并集等常見(jiàn)的集合操作;values視圖不是這樣的讥蔽,因?yàn)樗鼈儾皇俏ㄒ坏幕烈祝坏玦tems結(jié)果是的画机,如果(key,value)對(duì)是唯一的并且可散列的話都毒。

④色罚、排序字典鍵:

由于keys不會(huì)返回一個(gè)列表,必須要么手動(dòng)地轉(zhuǎn)換為一個(gè)列表账劲,要么在一個(gè)鍵視圖或字典自身上使用sorted調(diào)用戳护。

⑤、字典大小比較不再有效:

盡管在Python2.6中可以直接用<瀑焦、>等比較字典的相對(duì)大小腌且,但在Python3.0中這不再有效。然而榛瓮,可以通過(guò)手動(dòng)地比較排序后的鍵列表來(lái)模擬铺董。

Python3.0中字典相等性測(cè)試仍然有效。

⑥禀晓、has_key方法已死:in永生:

廣為使用的字典has_key鍵存在測(cè)試方法在Python3.0中取消了精续。相反,使用in成員關(guān)系表達(dá)式粹懒,或者帶有默認(rèn)測(cè)試的一個(gè)get(其中重付,in通常是首選的)。

本章小結(jié):

本章我們探討了列表和字典類(lèi)型——這可能是在Python程序中所見(jiàn)到并使用的兩種最常見(jiàn)凫乖、最具有靈活性而且功能最為強(qiáng)大的集合體類(lèi)型确垫。本章介紹了列表類(lèi)型支持任意對(duì)象的以位置排序的集合體,而且可以任意嵌套帽芽,按需要增長(zhǎng)和縮短删掀。字典類(lèi)型也是如此,不過(guò)它是以鍵來(lái)存儲(chǔ)元素而不是位置导街,并且不會(huì)保持元素之間任何可靠的由左至右的順序披泪。列表和字典都是可變的,所以它們支持各種不適用于字符串的原處修改操作菊匿。例如付呕,列表可以通過(guò)append調(diào)用來(lái)進(jìn)行增長(zhǎng),而字典則是通過(guò)賦值給新鍵的方法來(lái)實(shí)現(xiàn)跌捆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徽职,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子佩厚,更是在濱河造成了極大的恐慌姆钉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異潮瓶,居然都是意外死亡陶冷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)毯辅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)埂伦,“玉大人,你說(shuō)我怎么就攤上這事思恐≌疵眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵胀莹,是天一觀的道長(zhǎng)基跑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)描焰,這世上最難降的妖魔是什么媳否? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荆秦,結(jié)果婚禮上篱竭,老公的妹妹穿的比我還像新娘。我一直安慰自己步绸,他們只是感情好室抽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著靡努,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晓折。 梳的紋絲不亂的頭發(fā)上惑朦,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音漓概,去河邊找鬼漾月。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胃珍,可吹牛的內(nèi)容都是我干的梁肿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼觅彰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吩蔑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起填抬,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤烛芬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赘娄,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仆潮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遣臼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片性置。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揍堰,靈堂內(nèi)的尸體忽然破棺而出鹏浅,到底是詐尸還是另有隱情,我是刑警寧澤个榕,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布篡石,位于F島的核電站,受9級(jí)特大地震影響西采,放射性物質(zhì)發(fā)生泄漏凰萨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一械馆、第九天 我趴在偏房一處隱蔽的房頂上張望胖眷。 院中可真熱鬧,春花似錦霹崎、人聲如沸珊搀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)境析。三九已至,卻和暖如春派诬,著一層夾襖步出監(jiān)牢的瞬間劳淆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工默赂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沛鸵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓缆八,卻偏偏與公主長(zhǎng)得像曲掰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奈辰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容