- 本教程為python3文檔解讀
- 本教程面向完全型小白赫模,只要你會在電腦上打字律想,那你就可以看懂纹安。
- 參考視頻觀看,味道更加:https://space.bilibili.com/186584185/#!/video
- 建議優(yōu)先閱讀本系列的《編程的本質(zhì)》這一章節(jié)炭庙。
- 推薦閱讀:《跟我讀python3文檔:016_帶你手撕程序,展現(xiàn)一個函數(shù)如何從思路到實現(xiàn)》
作者:咖喱py
貫穿始終的理念:別廢話煌寇,就是干焕蹄!
往期回顧:
- 默認參數(shù)
- 關(guān)鍵字參數(shù)
- 匿名函數(shù)lambda
- 列表的方法
文檔解讀
python3文檔第五小節(jié)鏈接地址:5. Data Structures
本章主要講解5.1.1. Using Lists as Stacks(將列表作為棧使用)、5.1.2. Using Lists as Queues(將列表作為隊列使用)和5.2. The del statement(del語句)這三個小節(jié)
5.1.1. Using Lists as Stacks
所謂堆棧阀溶,其實指的就是一種數(shù)據(jù)的存儲與調(diào)用順序腻脏,這種順序用英文表達為:last-in, first-out,中文翻譯為:后進先出银锻。
即永品,最后存入的數(shù)據(jù),最先被調(diào)出击纬。
自己可以隨便腦補一下鼎姐,比如用來裝網(wǎng)球的筒,他被固定在地上更振,你只能從上面的口把網(wǎng)球放進去炕桨。用的時候,也只能從上面一個一個取出殃饿。大概就是這種感覺吧~
那么如何用列表實現(xiàn)這個后進先出的順序呢谋作?
結(jié)合我們以前學(xué)的列表的方法,思考下~
其實很簡單乎芳,需要用到兩個我們學(xué)過的列表方法:
append( )和pop( )
我們直接看實現(xiàn)代碼:
>>> stack = [3, 4, 5]
>>> stack.append(6) #往末尾添加數(shù)據(jù)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop() #從末尾取出數(shù)據(jù)
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
堆棧理解起來很簡單遵蚜,甚至沒什么好介紹的,但是關(guān)鍵在于你在實際編程時奈惑,能不能運用起來這個簡單的知識點吭净。
5.1.2. Using Lists as Queues
所謂隊列,同樣是一種數(shù)據(jù)存儲與調(diào)用的順序肴甸,用英文表達為:first-in, first-out寂殉,中文翻譯為:先進先出。
不過原在,由于這種順序用列表實現(xiàn)太過低效友扰,所以很少用到彤叉。
自己思考下實現(xiàn)方式,我們就不多介紹了村怪。
可以思考下為什么低效秽浇?之后再往下看解析。
低效原因:
一個列表甚负,他的零號索引值被取出了柬焕,這意味著,他的其他值的索引值都要改動梭域。
我們可以用以前的大樓來比喻:大樓0層的數(shù)據(jù)被搬走了斑举,于是,所以人相繼把其他數(shù)據(jù)往下挪動一層病涨。大樓0層的數(shù)據(jù)又被搬走了富玷,于是所有人再一次相繼把數(shù)據(jù)往下挪動一層。樓層越高没宾,這種人力的消耗就越大凌彬。
用列表實現(xiàn)這種先進先出的順序就是這樣的低效。
所以我們一般不用列表實現(xiàn)隊列循衰。而是用collections 庫的 deque來實現(xiàn)隊列铲敛。
這個等我們以后用到的時候在細講。
5.2. The del statement
del語句主要用于刪除數(shù)據(jù)会钝,它是delete的縮寫伐蒋。
為了更好的理解,我們直接看例子
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0] #刪除索引值為0號的數(shù)據(jù)
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4] #刪除一段數(shù)據(jù)
>>> a
[1, 66.25, 1234.5]
>>> del a[:] #刪除全部數(shù)據(jù)
>>> a
[]
>>> del a #刪除變量
del語句基本上就上面4種用法迁酸,好好掌握先鱼。
思考:
注意del語句與列表方法remove( )、pop( )之間的區(qū)別奸鬓。
可以從如下方面對比:
參數(shù)焙畔、返回值、一次可刪除的數(shù)據(jù)量
自己總結(jié)好后串远,最好把他們背下來~
思考題:
有一個列表[1, 5, 7, 4, 43, 56, 43, 876, 95],我想把它的順序顛倒宏多,除了使用reverse( )方法,還有什么辦法澡罚?
用今天學(xué)的知識伸但,自己實現(xiàn)看看~