1. 程式人生 > >第四章:操作列表

第四章:操作列表

clas str 3.3 轉換 一個 改變 導致 賦值 any

第四章:操作列表 4.1 遍歷整個列表 如果名單很長,將包含大量反復的代碼。另外,每當名單的長度發生變化時,都必須修改代碼。通過for 循環,可讓Python去處理這些問題 1)使用for循環來打印魔術師名單中的所有名字: magicians.py 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician(變量名) in magicians: print(magician) 變量名 2)這行代碼讓Python從列表magicians中取出一個名字,並將其存儲在變量magician中。最後,我們讓 Python打印前面存儲到變量magicica中的名字。這樣,對於列表中的每個名字,Python都將重復執行 代碼行。 也可以這樣解讀代碼:對於列表magicians中的每位魔術師,都將其名字打印出來 4.1.1 深入地研究循環 循環這種概念很重要,因為它是計算機自動完成重復工作的常見方式之一。 1)Python將首先讀取其中第一行代碼:for magician in magicians 這行代碼讓Python獲取列表magicians中的第一個值(‘alice‘),並將其存儲到變量magician 中。 2)接下來,Python讀取下一行代碼:print(magician) 它讓Python打印magician的值依然是‘alice‘ 3)接下來,Python再次執行循環,對列表中最後一個值----‘carolina‘進行處理。在這個示例中,for循環後面沒有其他代碼,因此程序就此結束。 補充:另外,編寫for循環時,對於用於存儲列表中每個值的臨時變量,可指定任何名稱。然而,選擇描述單個列表元素的有意義的名稱大有幫助。例如,對於小貓列表、小狗列表和一般性列表。 例:for cat in cats: for dog in dogs: for item in list_of_items: 4.1.2 在for循環中執行更多操作 1)在for循環中,可對每個元素執行任何操作。對於每位魔術師,都打印一條消息,指出他的表演精彩 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians: print(magician.title()+‘,that was a great trick!‘) 4.1.3 在for循環結束後執行一些操作 1)在for循環後面,沒有縮進的代碼都只執行一次,而不會重復執行。 2)下面打印一條向全體魔術師致謝的消息,感謝他們的精彩表演。 3)想要打印一條給全體魔術師的致謝消息,需要將相應的代碼放在for循環後面,且不縮進 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians: print(magician.title()+‘,that was a great trick!‘) print("I can‘t wait to see your next trick, "+magician.title()+‘.‘) print(‘Thank you,everyone.That was a great magic show!‘) 4.2 縮進 4.2.1 忘記縮進 1)對於位於for語句後面且屬於循環組成部分的代碼行,一定要縮進。如果忘記縮進,Python會提醒你 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians: print(magician) #會有縮進報錯:IndentationError: expected an indented block 4.2.2 忘記縮進額外代碼行 1)有時候,循環能夠運行而不會報告錯誤,但結果可能會出乎意料。 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians: print(magician.title()+‘,that was a great trick!‘) print("I can‘t wait to see your next trick, "+magician.title()+‘.‘)#忘記縮進的額外代碼行執行語句後效果與需求不符 4.2.3 不必要的縮進 1)如果你不小心縮進了無需縮進的代碼行,Python將指出這一點 例:message="Hello Python world!" print(message) #不必要的所及報錯 :IndentationError: unexpected indent 4.2.4 循環後不必要的縮進 1)如果你不小心縮進了應在循環結束後執行的代碼,這些代碼將針對每個列表元素重復執行。 這可能導致Python報告語法錯誤,但在大多數情況下,這只會導致邏輯錯誤。 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians: print(magician.title()+‘,that was a great trick!‘) print("I can‘t wait to see your next trick, "+magician.title()+‘.‘) print(‘Thank you,everyone.That was a great magic show!‘) #循環後不必要的縮進 4.2.5 遺漏了冒號 1)for語句末尾的冒號告訴Python,下一行是循環的第一行 例:magicians=[‘alice‘,‘david‘,‘carolina‘] for magician in magicians #遺漏冒號報錯:SyntaxError: invalid syntax prin(magician) 4.3 創建數值列表 4.3.1 使用函數range() 1)Python函數range()讓你能夠輕松地生成一系列的數子 numbers.py 例:for value in range(1,5) print(value) ===>打印數子1,2,3,4 2)函數range()讓Python從你指定的第一個值開始,並在到達你指定的第二個值後停止,因此輸入不包含第二個值(這裏為5) 4.3.2 使用range()創建數子列表 1)要創建數子列表,可使用函數list()將range()的結果直接轉換為列表。如果將range()作為list()參數,輸出將為一個數子列表 4.3.3 對數子列表執行簡單的統計計算 1)min(變量名)方法:找出列表中的最小值 例:digits=[1,2,3,4,5,6,7,8,9,0] min(digits) ===> 0 2)max(變量名)方法:找出列表中的最大值 例:digits=[1,2,3,4,5,6,7,8,9,0] max(digits) ===>9 3)sum(變量名)方法:找出列表總和 例:digits=[1,2,3,4,5,6,7,8,9,0] sum(digits) ===>45 4.3.4 列表解析 1)列表解析將for循環和創建新元素的代碼合並成一行,並自動附加新元素 例:squares=[value**2 for value in range(1,11)] print(squares) 2)要使用這種語法 <1>首先指定一個描述性的列表名,如squares。 <2>然後,指定一個左方括號,並定義一個表達式,用於生成你要存儲到列表中的值。在這個示例中表達式為 "value**2" 它計算平方值 <3>接下來,編寫一個for循環,用於給表達式提供值,再加上右方括號。在這個示例中,for循環為 “for value in range(1,11)” 它將值1~10提供給表達式 “value**2” <4>註意:這裏的for循環語句末尾沒有冒號 4.4.1 切片 1)要創建切片,可指定要使用的第一個元素和最後一個元素的索引。與函數range()一樣,Python在到達你指定的第二個索引前面的元素後停止。要輸出列表中的前三個元素,需要指定索引0~3,這將輸出分別為0、1和2元素。 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print(players[0:3]) 2)可以生產列表的任何子集,例如:如果你要提取列表的第2~4個元素,可將起始索引指定為1,並將終止索引指定為4 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print(players[1:4]) 3)如果你沒有指定第一個索引,Python將自動從列表開頭開始 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print(players[:4]) 4)要讓切片終止列表末尾,也可使用類似的語法。例如,如果要提取第3個元素到列表末尾的所有元素,可將起始索引指定為2,並省略終止索引 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print(players[2:]) 5)無論列表多長,這種語法都能夠讓你輸出從特定位置到列表末尾的所有元素。本書前面說過,負數索引返回離列表末尾相應距離的元素,因此你可以輸出列表末尾的任何切片。例如,如果你要輸出名單上的最後三名隊員,可以使用切片players[-3:] 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print(players[-3:]) 6)切片的第三個參數:從x到y-1,每n個取一個制作切片(可以理解為步長) 例:num=[num for num in range(1,101)] print(num[2::3]) #從1到100取3的倍數 從3開始到列表最後個元素100,每3個取一個制作切片 print(num[4:50:5]) #從5開始到50取5的倍數 從5開始到50 步長為5 4.4.2 遍歷切片 1)如果要遍歷列表的部分元素,可在for循環中使用切片。在下面的示例中,我們遍歷前三名隊員,並打印他們名字 例:players=[‘charles‘,‘martina‘,‘michael‘,‘florence‘,‘eli‘] print("Here are th first three players on my team:") for player in players[:3]: print(player.title()) 2)在很多情況下,切片都很有用。例如,編寫遊戲時,你可以在玩家退出遊戲時將其最終得分加入到一個列表中。然後,為獲取該玩家的三個最高得分,你可以將該列表按降序排列,再創建一個只包含前三個得分的切片 4.4.3 復制列表 1)要復制列表,可創建一個包含整個列表的切片,方法是同時省略其實索引和終止索引([:])。這讓Python創建一個始於第一個元素,終止最後一個元素的切片,即復制整個列表。 假如,假設有一個列表,其中包含你最喜歡的三種食品,而你還想創建另一個列表,在其中包含一位朋友喜歡的所有食品。 不過,你喜歡的食品,這位朋友都喜歡,因此你可以通過復制來創建這個列表 例:my_foods=[‘pizza‘,‘falafel‘,‘carrot cake‘] frind_foods=my_foods[:] print("My favorite foods are: ") print(my_foods) print("\nMy friends‘s favorite foods are: ") print(friend_foods) 4.5 元組 1)列表非常適合用於存儲在程序運行期間可能變化的數據集。列表是可以修改的,這對處理網站的用戶列表或遊戲中的角色列表至關重要。然而,有時候你需要創建一系列不可修改的元素,元組可以滿足這種需求。Python將不能修改的值稱為 不可變的,而不可變的列表唄稱為元組 4.5.1 定義元組 1)元組看起來猶如列表,但使用圓括號而不是方括號來標識。定義元組後,就可以使用索引來訪問其元素,就像訪問列表元素一樣。 例:dimensions=(200,50) dimensions[0]=250 #改變第一個元素的值 ===> 此時python會報錯,並給出錯誤提示:不能給元組的元素賦值 4.5.2 遍歷元組中的所有值 1)像列表一樣,也可以使用for循環來遍歷元組中的所有值: 例:dimensions=(200,50) for dimension in dimensions: print(dimension) 4.5.3 修改元組變量 1)雖然不能修改元組的元素,但可以給存儲元組的變量賦值。因此,如果要修改前述舉行的尺寸,可重新定義整個元組: 例:dimensions=(200,50) print("Original dimensions: ") for dimension in dimensions: print(dimension) dimensions=(400.100) #給元組重新賦值 print("") 4.6 設置代碼格式 為確保所有人編寫的代碼的結構都大致一致,Python程序猿都遵循一些格式設置約定。學會編寫整潔的Python後,就能明白他人編寫的Python代碼的整體結構——只要他們和你遵循相同的指南。要成為專業程序猿,應從現在開始遵循這些指南,以養成良好的習慣。 4.6.1 格式設置指南 詳情請訪問https://www.python.org/dev/peps/pep-0008/, 閱讀PEP 8 格式設置指南
4.6.2 定制Geany的設置 1、將制表符轉換為空格 選擇菜單Edit(編輯)---->Preferences(首選項),再依次單擊Editor(編輯器)---->Indentation(縮進)。將制表符寬度設置為4 並將Type設置為Spaces 如果你在程序中混合使用了標示符和空格,可選擇菜單Document(文檔)---->Replace Tabs by Spaces(替換制表符為空格),將所有制表符都轉換為空格 2、設置行長標誌 要在Geany中設置這項功能,請選擇菜單Edit(編輯)---->Preferences(首選項),再依次單擊Editor(編輯器)---->Display(顯示),確保啟用了長行標誌,再確保文本框“列”中的值為79 3、縮進和撤銷縮進代碼塊 要縮進代碼塊 可按Ctrl+I 要撤銷代碼塊縮進 可按Ctrl+U

第四章:操作列表