python學習-------第三天(操作列表)
操作列表
1、遍歷整個列表
1.1使用for()迴圈
1.2在for()迴圈中執行更多的 操作
相比前一段程式碼,本唯一的不同是對於每位魔術師,都列印了一條以其名字為開頭的訊息。
在for迴圈中,想包含多少行程式碼都可以。在程式碼 for magician in magicians :後面,每個縮排的程式碼行都是迴圈的一部分,並且針對列表中的每個值都執行一次,因此,可對列表中的 ,誒個執行任意次數的操作。
下面再新增一行程式碼,告訴每位魔術師,我們期待他的下一次表演。
1.3在for迴圈結束後執行一些操作
在for迴圈後面,滅有縮排的程式碼都只執行一次,而不會重複執行。下面列印一條向全體魔術師致謝的訊息,感謝 他們的精彩 表演。想要在列印給各位魔術師的訊息後面列印一條給全體魔術師的致謝訊息,需要將相應的程式碼放在for迴圈後,且不縮排:
2、避免縮排錯誤
Python根據縮排來判斷程式碼行與前一行的關係。
當你開始編寫必須正確縮排的程式碼時,需要注意一些常見的縮排錯誤。例如,有時候,程式會將不需要縮排的程式碼塊縮排,而對於必須縮排的程式碼塊卻忘了縮排。
下面看一些常見的縮排錯誤
2.1忘記縮排
對於位於for語句後面且屬於迴圈組成部分的程式碼行,一定要縮排。如果忘記縮排,python會提醒:
通常,將緊跟在for語句後面的程式碼縮排,可消除這種縮排錯誤。
2.2忘記縮排額外的程式碼行
有時候不會報錯,但是結果可能出乎意料。試圖在迴圈中執行多想任務,卻忘記縮排其中的一些程式碼行時,就會出現這種情況:
這是一個邏輯錯誤。從語法上看這些程式碼時合理的,但是由於從在邏輯錯誤,並不符合預期。如果預期某項操作針對列表元素都執行一次,但是隻執行了一次,請確定是否需要將一行或者多行程式碼縮排。
2.3不必要的縮排
Print語句無需縮排,因為並不屬於前一行程式碼,因此python將指出這種錯誤。
2.4迴圈後不必要的縮排
如果不小心縮進了應該在迴圈結束後執行的程式碼,這些程式碼將針對每個列表元素重複執行。有些情況下,這可能導致python報錯,但是在大多數情況下,這會會導致邏輯錯誤。
2.5遺漏了冒號
For語句末尾的冒號告訴python,下一行時迴圈的第一行。
如果不小心遺漏了冒號,就將導致語法錯誤。
練習:想出至少三種有共同特徵的動物, 將這些動物的名稱儲存在一個列表中, 再使用for 迴圈將每種動物的名稱都打印出來。 修改這個程式, 使其針對每種動物都列印一個句子, 如“A dog would make a great pet”。 在程式末尾新增一行程式碼, 指出這些動物的共同之處, 如列印諸如“Any of these animals would make a great pet!”這樣的句子。
3、建立數值列表
列表非常適合用於儲存數字集合,而python提供了很多工具,可幫助你高效地處理數字列表。
3.1使用函式range()
Python函式range()讓你輕鬆的生成一系列的數字。
例如:
這個示例中,range()只打印數字1~4.。函式range()讓python從你指定的第一個值開始數,並在到達你指定的第二個值後停止,因此不包含第二個值(這裡是5)。這是一個半閉半開區間。
如果想要列印1~5,就用range(1,6)。
使用range()時,如果輸出不符合預期,嘗試將指定的值加1或者減1.
3.2使用range()建立數字列表
要建立數字列表,可使用函式list()將range()的結果直接轉換為列表。如果 將range()作為list()的引數,輸出將為一個數字列表。
使用函式range()時,還可指定步長。例如,下面列印1~10內的偶數
這個示例中,函式range()從2 開始,然後不斷的加2,直到達到或者超過終值11.
使用函式range()幾乎能建立任何需要的數字集,例如,建立一個列表,其中包含前10個整數的平方。。在python中(,兩個星號**)表示乘方運算。
首先建立一個空列表,接下來,使用函式range()讓python遍歷一遍1~10的值。在迴圈中,計算當前值得平方,並將結果儲存到變數square中,然後將計算得到的平方值附加到列表squares中。最後迴圈結束,列印列表squares。
3.3對數字列表執行簡單的統計計算
有幾個專門用於處理數字列表的python函式。例如,你可以輕鬆地找出數字列表的最大值、最小值和總和。
本節使用的數字列表很短,但是這裡介紹的知識也適用於包含數百萬個數字的列表。
3.4列表解析
前面生成列表squares的方式包含三四行程式碼,而列表解析只需要寫一行程式碼就能生成這樣的列表。列表解析 將for迴圈和建立新元素的程式碼合併成一行,並自動附加新元素。
下面用列表解析建立平方數列表:
使用這種語法,首先指定一個描述性的列表名,如message;然後,指定一個左方括號,並定義一個表示式,用於生成你要儲存到列表中的值。這個示例中,表示式是value**2,計算平方值。接下來,編寫一個for迴圈,用於給表示式提供值,再加上右方括號。在這個示例中for迴圈為for value inrange(1,11),他將值1~10提供給表示式value**2,注意這裡的for沒有冒號。
練習:
建立一個列表,其中包含數字1~1000000,再使用min(),max(),sum()核實列表確實從 1開始,1000000結束的。另外對這個列表呼叫函式sum()。
練習:使用range()三個引數,列印1~20的所有奇數
練習:建立一個列表,其中包含3~30內能被3整除的數字,並用for迴圈將這個列表中的數字都打印出來。
練習:將同一個數字乘三次稱為立方。例如,python中,2的立方用2**3表示,建立一個列表,其中包含前1個整數的立方。
4、使用列表的一部分
在上一章學習瞭如何訪問單個列表元素。在本章,學習如何處理列表的所有元素。還可以處理列表的部分元素------python稱之為切片。
4.1切片
要建立切片,可指定要使用的第一個元素和最後一個元素的索引。與函式range()一樣,python在到達你指定的第二個索引前面的元素後停止。要輸出列表中的前三個元素,需要指定索引0~3,將輸出分別為0,1和2的元素。
沒有指定起始索引,python從列表頭處開始
要將切片終止於列表末尾,也可用類似的方法
複數索引返回離列表末尾相應距離的元素,因此你可以輸出列表末尾的任何切片。
4.2遍歷切片
如果要遍歷列表的部分元素,可在for迴圈中使用切片。
我們遍歷前三名隊員,並列印他們 的名字
上述程式碼沒有遍歷整個隊員列表,而只是遍歷前三名隊員
4.3複製列表
要複製列表,可建立一個包含整個列表的切片,方法是同時省略起始索引和終止索引([:])。這讓python建立一個起始於第一個元素,終止於最後一個元素的切片。即複製整個列表。
分別給my_foods列表和friend_foods列表加入新的食物,列印
發現latiao 在my_foods列表而不在friend_foods列表,Apple在friend_foods列表,而不在my_foods列表。倘若我們簡單的將my_foods賦給friend_foods列表,就不能得到兩個列表。下邊用不切片的方式:
這種語法實際上是讓python將新變數friend_foods關聯到包含my_foods中的列表。因此這兩個列表指向同一個列表。
5、元組
列表非常適合用於儲存在程式執行期間可能變化的資料集,列表是可以修改的,然而有時候你需要建立一系列不可修改的元素。元組可以滿足這種需求。Python將不能修改的值稱為不可變的,而不可變的列表稱為元組。
5.1定義元組
元組看起來猶如列表,但使用 圓括號而不是方括號來標識。定義元組後,就可以使用索引來訪問其元素,就像訪問列表元素一樣。
例如:有一個大小不應改變的三角形,可將其三條邊儲存在元組中,從而確保他們是不能修改的。
嘗試修改元組元素的值
5.2遍歷元組中的所有值
像列表一樣,也可以使用for迴圈來遍歷元組中的所有值
5.3修改元組變數
雖然不能修改元組的元素,但可以給儲存元組的變數賦值。