【編測編學】零基礎學python_11_列表(切片+遍歷切片+複製)
1.列表切片
要建立切片,可指定要使用的第一個元素和最後一個元素的索引。與函式 range() 一樣, Python 在到達你指定的第二個索引前面的元素後停止。要輸出列表中的前三個元素,需要指定索引 0~3 ,這將輸出分別為 0 、 1 和 2 的元素。
下面的示例處理的是一個運動隊成員列表:
處的程式碼列印該列表的一個切片,其中只包含三名隊員。輸出也是一個列表,其中包含前三名隊員:
你可以生成列表的任何子集,例如,如果你要提取列表的第 2~4 個元素,可將起始索引指定為 1 ,並將終止索引指定為 4 :
這一次,切片始於 'marita' ,終於 'florence' :
如果你沒有指定第一個索引, Python 將自動從列表開頭開始:
由於沒有指定起始索引, Python 從列表開頭開始提取:
要讓切片終止於列表末尾,也可使用類似的語法。例如,如果要提取從第 3 個元素到列表末尾的所有元素,可將起始索引指定為 2 ,並省略終止索引:
Python 將返回從第 3 個元素到列表末尾的所有元素:
無論列表多長,這種語法都能夠讓你輸出從特定位置到列表末尾的所有元素。本書前面說過,負數索引返回離列表末尾相應距離的元素,因此你可以輸出列表末尾的任何切片。
例如,如果你要輸出名單上的最後三名隊員,可使用切片 players[-3:] :
上述程式碼列印最後三名隊員的名字,即便隊員名單的長度發生變化,也依然如此。
2.遍歷切片
如果要遍歷列表的部分元素,可在 for 迴圈中使用切片。在下面的示例中,我們遍歷前三名隊員,並列印他們的名字:
此處的程式碼沒有遍歷整個隊員列表,而只遍歷前三名隊員:
在很多情況下,切片都很有用。例如,編寫遊戲時,你可以在玩家退出遊戲時將其最終得分加入到一個列表中。然後,為獲取該玩家的三個最高得分,你可以將該列表按降序排列,再建立一個只包含前三個得分的切片。處理資料時,可使用切片來進行批量處理;編寫 Web 應用程式時,可使用切片來分頁顯示資訊,並在每頁顯示數量合適的資訊。
3. 複製列表
你經常需要根據既有列表建立全新的列表。下面來介紹複製列表的工作原理,以及複製列表可提供極大幫助的一種情形。
要複製列表,可建立一個包含整個列表的切片,方法是同時省略起始索引和終止索引( [:] )。這讓 Python 建立一個始於第一個元素,終止於最後一個元素的切片,即複製整個列表。
例如,假設有一個列表,其中包含你最喜歡的四種食品,而你還想建立另一個列表,在其中包含一位朋友喜歡的所有食品。不過,你喜歡的食品,這位朋友都喜歡,因此你可以通過複製來建立這個列表:
我們首先建立了一個名為 my_foods 的食品列表,然後建立了一個名為 friend_foods 的新列表。我們在不指定任何索引的情況下從列表 my_foods 中提取
一個切片,從而建立了這個列表的副本,再將該副本儲存到變數 friend_foods 中。列印每個列表後,我們發現它們包含的食品相同:
為核實我們確實有兩個列表,下面在每個列表中都新增一種食品,並核實每個列表都記錄了相應人員喜歡的食品:
與前一個示例一樣,我們首先將 my_foods 的元素複製到新列表 friend_foods 中。接下來,在每個列表中都新增一種食品:在列表 my_foods 中新增 'cannoli'
,而在 friend_foods 中新增 'ice cream' 。最後,列印這兩個列表,核實這兩種食品包含在正確的列表中。
第一個輸出表明, 'cannoli' 包含在你喜歡的食品列表中,而 'ice cream' 沒有。第二個輸出表明, 'ice cream' 包含在你朋友喜歡的食品列表中,而 'cannoli' 沒
有。倘若我們只是簡單地將 my_foods 賦給 friend_foods ,就不能得到兩個列表。例如,下例演示了在不使用切片的情況下複製列表的情況:
這裡將 my_foods 賦給 friend_foods ,而不是將 my_foods 的副本儲存到 friend_foods。這種語法實際上是讓 Python 將新變數 friend_foods 關聯到包含
在 my_foods 中的列表,因此這兩個變數都指向同一個列表。鑑於此,當我們將 'cannoli' 新增到 my_foods 中時,它也將出現在 friend_foods 中;同樣,雖然 'ice
cream' 好像只被加入到了 friend_foods 中,但它也將出現在這兩個列表中。
輸出表明,兩個列表是相同的,這並非我們想要的結果:
注意 現在暫時不要考慮這個示例中的細節。基本上,當你試圖使用列表的副本時,如果結果出乎意料,請確認你像第一個示例那樣使用切片複製了列表。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985967/viewspace-2737478/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【編測編學】零基礎學python_09_列表(操作列表之遍歷列表)Python
- 【編測編學】零基礎學python_10_列表(建立數值列表 )Python
- 【編測編學】零基礎學python_06_列表(認識和使用列表)Python
- Python 列表切片陷阱:引用、複製與深複製Python
- 【編測編學】零基礎學python_08_列表(排序+反轉+長度)Python排序
- 【編測編學】零基礎學python_07_列表(修改、新增和刪除元素)Python
- 【編測編學】零基礎學python_03_字串(拼接+換行+製表符)Python字串
- python學習筆記 列表的切片Python筆記
- 【編測編學】零基礎學python_04_字串(刪除空白)Python字串
- 【編測編學】零基礎學python_02_字串(大小寫轉換)Python字串
- Python列表切片操作Python
- 『無為則無心』Python序列 — 19、Python列表的其他操作(切片和遍歷)Python
- python中切片的淺複製探究Python
- (八)Redis 主從複製、切片叢集Redis
- python列表切片是什麼Python
- GO語言————7.5 切片的複製與追加Go
- 微課|中學生可以這樣學Python(5.8.2節):使用切片修改列表Python
- 【學習筆記】Golang 切片筆記Golang
- go 學習筆記---切片Go筆記
- GO語言學習——切片二Go
- 【編測編學】MySQL資料庫基礎知識MySql資料庫
- 微課|中學生可以這樣學Python(5.8.1節):使用切片訪問列表元素Python
- python列表中切片的正負數Python
- 109-Python中列表索引和切片Python索引
- 【編測編學】MySQL資料庫基礎知識2MySql資料庫
- Go 切片 slice - Go 學習記錄Go
- Python基礎——切片例項Python
- Python基礎-列表操作(2):列表的遍歷和數字列表Python
- 切片
- go語言學習-陣列-切片-mapGo陣列
- 列表切片賦值給另一個變數賦值變數
- golang nil 切片和空切片區別Golang
- go中陣列,切片和append的玄學Go陣列APP
- 小白對go陣列及切片的學習Go陣列
- Slice切片
- 第 10 節:複合型別 2: 切片型別
- Python零基礎學習筆記(十五)——list(列表)Python筆記
- 沒學歷沒基礎怎麼學IT?零基礎學IT必須知道的事!