鍍金池/ 教程/ Python/ exercise34.訪問列表元素
附錄 A-練習 9:生成一個空文件(Touch, New-Item)
附錄 A-練習 10:復制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習 14:刪除文件 (rm)
附錄 A-練習 11:移動文件 (mv)
exercise46.項目骨架
附錄 A-練習 3:如果你迷路了
exercise37.復習符號
exercise47.自動化測試
exercise3.數(shù)字和數(shù)學計算
附錄 A-練習 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對象、類、以及從屬關(guān)系
exercise48.更復雜的用戶輸入
下一步
簡介
附錄 A-練習 7:刪除路徑 (rmdir)
exercise49.寫代碼語句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類和對象
附錄 A-練習 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達式
附錄 A-練習 4:創(chuàng)建一個路徑 (mkdir)
附錄 A-練習 15:退出命令行 (exit)
exercise25. 更多更多的練習
exercise6.字符串和文本
exercise2.注釋和井號“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個程序
exercise23. 閱讀代碼
附錄 A-練習 5:改變當前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學到了什么?
exercise41.學會說面向?qū)ο?/span>
exercise52.開始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來制作一個游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語句
exercise36.設計和調(diào)試
exercise0.安裝和準備
exercise50.你的第一個網(wǎng)站
附錄 A-練習 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習 6:列出當前路徑 (ls)
exercise16.讀寫文件
exercise4.變量和命名
exercise34.訪問列表元素
exercise11.提問
exercise43.基本的面向?qū)ο蟮姆治龊驮O計
附錄 A-簡介
附錄 A-練習 8:目錄切換(pushd, popd)
來自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打?。ㄝ敵觯?/span>
附錄 A-練習 13:輸出文件 (cat)
exercise39.字典,可愛的字典

exercise34.訪問列表元素

列表的用處很大,但只有你能訪問里邊的內(nèi)容時它才能發(fā)揮出作用來。你已經(jīng)學會了按順序讀出列表的內(nèi)容,但如果你要得到第 5 個元素該怎么辦呢?你需要知道如何訪問列表中的元素。訪問第一個元素的方法是這樣的:

animals = ['bear', 'tiger', 'penguin', 'zebra']
bear = animals[0]

你定義了一個 animals 的列表,然后你用 0 來獲取第一個元素?! 這是怎么回事?因為數(shù)學里邊就是這樣,所以 Python 的列表也是從 0 開始的。雖然看上去很奇怪,這樣定義其實有它的好處,實際上設計成 0 或者 1 開頭其實都可以。

最好的解釋方式是將你平時使用數(shù)字的方式和程序員使用數(shù)字的方式做對比。

假設你在觀看上面列表中的四種動物 (['bear', 'tiger', 'penguin', 'zebra']) 賽跑。 而它們比賽的名詞正好跟列表里的次序一樣。這是一場很激動人心的比賽,因為這些動物沒打算吃掉對方,而且比賽還真的舉辦起來了。結(jié)果你的朋友來晚了,他想知道誰贏了比賽,他會問你“嘿,誰是第 0 名”嗎?不會的,他會問“嘿,誰是第 1 名?”

這是因為動物的次序是很重要的。沒有第一個就沒有第二個,沒有第二個也沒有第三個。第零個是不存在的,因為零的意思是什么都沒有?!笆裁炊紱]有”怎么贏比賽嘛,完全不合邏輯。這樣的數(shù)字我們稱之為“序數(shù)(ordinal number)”,因為它們表示的是事物的順序。

而程序員不能用這種方式思考問題,因為他們可以從列表的任何一個位置取出一個元素來。對程序員來說,上述的列表更像是一疊卡片如果他們想要 tiger,就抓它出來,如果想要 zebra,也一樣抓取出來。要隨機地抓取列表里的內(nèi)容,列表的每一個元素都應該有一個地址,或者一個“index(索引)”,而最好的方式是使用以 0 開頭的索引。相信我說的這一點吧,這種方式獲取元素會更容易。這類的數(shù)字被稱為“基數(shù)(cardinal number)”,它意味著你可以任意抓取元素,所以我們需要一個 0 號元素。

那么,這些知識對于你的列表操作有什么幫助呢?很簡單,每次你對自己說“我要第 3 只動物”時,你需要將“序數(shù)”轉(zhuǎn)換成“基數(shù)”,只要將前者減 1 就可以了。第 3 只動物的索引是 2,也就是 penguin。由于你一輩子都在跟序數(shù)打交道,所以你需要用這種方式來獲得基數(shù),只要減 1 就都搞定了。 記住: ordinal == 有序,以 1 開始;cardinal == 隨機選取, 以 0 開始。

讓我們練習一下。定義一個動物列表,然后跟著做后面的練習,你需要寫出所指位置的動物名稱。如果我用的是“1st,2nd”等說法,那說明我用的是序數(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.

對于上述每一條,以這樣的格式寫出一個完整的句子:“The 1st animal is at 0 and is a bear.” 然后倒過來念:“The animal at 0 is the 1st animal and is a bear.”

使用 python 檢查你的答案。

附加題

1.以你對于這些不同的數(shù)字類型的了解,解釋一下為什么 “January 1, 2010” 里是 2010 而不是 2009?(提示:你不能隨機挑選年份。) 2.再寫一些列表,用一樣的方式作出索引,確認自己可以在兩種數(shù)字之間互相翻譯。 3.使用 python 檢查自己的答案。

Warning: 會有程序員告訴你讓你去閱讀一個叫“Dijkstra”的人寫的關(guān)于數(shù)字的話題。我建議你還是不讀為妙。除非你喜歡聽一個在編程這一行剛興起時就停止從事編程的人對你大喊大叫。