W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
列表的用處很大,但只有你能訪問(wèn)里邊的內(nèi)容時(shí)它才能發(fā)揮出作用來(lái)。你已經(jīng)學(xué)會(huì)了按順序讀出列表的內(nèi)容,但如果你要得到第5個(gè)元素該怎么辦呢?你需要知道如何訪問(wèn)列表中的元素。訪問(wèn)第一個(gè)元素的方法是這樣的:
animals = ['bear', 'tiger', 'penguin', 'zebra']
bear = animals[0]
你定義了一個(gè) animals 的列表,然后你用 0 來(lái)獲取第一個(gè)元素?! 這是怎么回事?因?yàn)閿?shù)學(xué)里邊就是這樣,所以 Python 的列表也是從 0 開(kāi)始的。雖然看上去很奇怪,這樣定義其實(shí)有它的好處,實(shí)際上設(shè)計(jì)成 0 或者 1 開(kāi)頭其實(shí)都可以。
最好的解釋方式是將你平時(shí)使用數(shù)字的方式和程序員使用數(shù)字的方式做對(duì)比。
假設(shè)你在觀看上面列表中的四種動(dòng)物 (['bear', 'tiger', 'penguin', 'zebra']
) 賽跑。 而它們比賽的名詞正好跟列表里的次序一樣。這是一場(chǎng)很激動(dòng)人心的比賽,因?yàn)檫@些動(dòng)物沒(méi)打算吃掉對(duì)方,而且比賽還真的舉辦起來(lái)了。結(jié)果你的朋友來(lái)晚了,他想知道誰(shuí)贏了比賽,他會(huì)問(wèn)你“嘿,誰(shuí)是第 0 名”嗎?不會(huì)的,他會(huì)問(wèn)“嘿,誰(shuí)是第 1 名?”
這是因?yàn)閯?dòng)物的次序是很重要的。沒(méi)有第一個(gè)就沒(méi)有第二個(gè),沒(méi)有第二個(gè)也沒(méi)有第三個(gè)。第零個(gè)是不存在的,因?yàn)榱愕囊馑际鞘裁炊紱](méi)有。“什么都沒(méi)有”怎么贏比賽嘛,完全不合邏輯。這樣的數(shù)字我們稱之為“序數(shù)(ordinal number)”,因?yàn)樗鼈儽硎镜氖鞘挛锏捻樞颉?/p>
而程序員不能用這種方式思考問(wèn)題,因?yàn)樗麄兛梢詮牧斜淼娜魏我粋€(gè)位置取出一個(gè)元素來(lái)。對(duì)程序員來(lái)說(shuō),上述的列表更像是一疊卡片如果他們想要 tiger,就抓它出來(lái),如果想要zebra,也一樣抓取出來(lái)。要隨機(jī)地抓取列表里的內(nèi)容,列表的每一個(gè)元素都應(yīng)該有一個(gè)地址,或者一個(gè)“index(索引)”,而最好的方式是使用以0開(kāi)頭的索引。相信我說(shuō)的這一點(diǎn)吧,這種方式獲取元素會(huì)更容易。這類的數(shù)字被稱為“基數(shù)(cardinal number)”,它意味著你可以任意抓取元素,所以我們需要一個(gè) 0 號(hào)元素。
那么,這些知識(shí)對(duì)于你的列表操作有什么幫助呢?很簡(jiǎn)單,每次你對(duì)自己說(shuō)“我要第 3 只動(dòng)物”時(shí),你需要將“序數(shù)”轉(zhuǎn)換成“基數(shù)”,只要將前者減 1 就可以了。第 3 只動(dòng)物的索引是2,也就是penguin。由于你一輩子都在跟序數(shù)打交道,所以你需要用這種方式來(lái)獲得基數(shù),只要減 1 就都搞定了。記住: ordinal == 有序,以 1 開(kāi)始;cardinal == 隨機(jī)選取, 以 0 開(kāi)始。
讓我們練習(xí)一下。定義一個(gè)動(dòng)物列表,然后跟著做后面的練習(xí),你需要寫(xiě)出所指位置的動(dòng)物名稱。如果我用的是“1st,2nd”等說(shuō)法,那說(shuō)明我用的是序數(shù),所以你需要減去 1。如果我給你的是基數(shù)(0, 1, 2),你只要直接使用即可。
animals = ['bear', 'python', 'peacock', 'kangaroo', 'whale', 'platypus']
The animal at 1.
The third (3rd) animal.
The first (1st) animal.
The animal at 3.
The fifth (5th) animal.
The animal at 2.
The sixth (6th) animal.
The animal at 4.
對(duì)于上述每一條,以這樣的格式寫(xiě)出一個(gè)完整的句子:“The 1st animal is at 0 and is a bear.” 然后倒過(guò)來(lái)念:“The animal at 0 is the 1st animal and is a bear.”
使用 python 檢查你的答案。
- 以你對(duì)于這些不同的數(shù)字類型的了解,解釋一下為什么 “January 1, 2010” 里是 2010 而不是 2009?(提示:你不能隨機(jī)挑選年份。)
- 再寫(xiě)一些列表,用一樣的方式作出索引,確認(rèn)自己可以在兩種數(shù)字之間互相翻譯。
- 使用 python 檢查自己的答案。
Warning:會(huì)有程序員告訴你讓你去閱讀一個(gè)叫“Dijkstra”的人寫(xiě)的關(guān)于數(shù)字的話題。我建議你還是不讀為妙。除非你喜歡聽(tīng)一個(gè)在編程這一行剛興起時(shí)就停止從事編程的人對(duì)你大喊大叫。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: