1. 程式人生 > >python中列表的知識點總結,出自python程式設計從入門到實踐!

python中列表的知識點總結,出自python程式設計從入門到實踐!

python中列表的知識點總結,出自python程式設計從入門到實踐!

 

訪問列表元素

列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴 Python 即可。要訪問列表元素,可指出列表的名稱,再指出元素的索引,並將其放在方括號內。

                學習Python中有不明白推薦加入交流群
                號:516107834
                群裡有志同道合的小夥伴,互幫互助,
                群裡有不錯的學習教程!

例如,下面的程式碼從列表 bicycles 中提取第一款自行車:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']

❶ print(bicycles[0])

❶處演示了訪問列表元素的語法。當你請求獲取列表元素時, Python 只返回該元素,而不包括方括號和引號:

trek

這正是你要讓使用者看到的結果 —— 整潔、乾淨的輸出。索引從 0 而不是 1 開始

修改列表元素

修改列表元素的語法與訪問列表元素的語法類似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。

例如,假設有一個摩托車列表,其中的第一個元素為 'honda' ,如何修改它的值呢?

motorcycles.py

❶ motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

❷ motorcycles[0] = 'ducati'

print(motorcycles)

我們首先定義一個摩托車列表,其中的第一個元素為 'honda' (見❶)。接下來,我們將第一個元素的值改為 'ducati' (見❷)。輸出表明,第一個元素的值確實變了,但其他列表元素的值沒變:

['honda', 'yamaha', 'suzuki']

['ducati', 'yamaha', 'suzuki']

你可以修改任何列表元素的值,而不僅僅是第一個元素的值。

3.2.2 在列表中新增元素

你可能出於眾多原因要在列表中新增新元素,例如,你可能希望遊戲中出現新的外星人、新增視覺化資料或給網站新增新註冊的使用者。 Python 提供了多種在既有列表中新增新資料

的方式。

1. 在列表末尾新增元素

在列表中新增新元素時,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將新增到列表末尾。繼續使用前一個示例中的列表,在其末尾新增新元素 'ducati' :

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

❶ motorcycles.append('ducati')

print(motorcycles)

方法 append() 將元素 'ducati' 新增到了列表末尾(見❶ ),而不影響列表中的其他所有元素:

['honda', 'yamaha', 'suzuki']

['honda', 'yamaha', 'suzuki', 'ducati']

方法 append() 讓動態地建立列表易如反掌,例如,你可以先建立一個空列表,再使用一系列的 append() 語句新增元素。下面來建立一個空列表,再在其中新增元

素 'honda' 、 'yamaha' 和 'suzuki' :

motorcycles = []

motorcycles.append('honda')

motorcycles.append('yamaha')

motorcycles.append('suzuki')

print(motorcycles)

最終的列表與前述示例中的列表完全相同:

['honda', 'yamaha', 'suzuki']

這種建立列表的方式極其常見,因為經常要等程式執行後,你才知道使用者要在程式中儲存哪些資料。為控制使用者,可首先建立一個空列表,用於儲存使用者將要輸入的值,然後將

使用者提供的每個新值附加到列表中。

2. 在列表中插入元素

使用方法 insert() 可在列表的任何位置新增新元素。為此,你需要指定新元素的索引和值。

motorcycles = ['honda', 'yamaha', 'suzuki']

❶ motorcycles.insert(0, 'ducati')

print(motorcycles)

在這個示例中,值 'ducati' 被插入到了列表開頭(見❶);方法 insert() 在索引 0 處新增空間,並將值 'ducati' 儲存到這個地方。這種操作將列表中既有的每個元素都右

移一個位置:

['ducati', 'honda', 'yamaha', 'suzuki']

3.2.3 從列表中刪除元素

你經常需要從列表中刪除一個或多個元素。例如,玩家將空中的一個外星人射殺後,你很可能要將其從存活的外星人列表中刪除;當用戶在你建立的 Web 應用中登出其賬戶時,

你需要將該使用者從活躍使用者列表中刪除。你可以根據位置或值來刪除列表中的元素。

1. 使用 del 語句刪除元素

如果知道要刪除的元素在列表中的位置,可使用 del 語句。

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

❶ del motorcycles[0]

print(motorcycles)

❶ 處的程式碼使用 del 刪除了列表 motorcycles 中的第一個元素 —— 'honda' :

['honda', 'yamaha', 'suzuki']

['yamaha', 'suzuki']

使用 del 可刪除任何位置處的列表元素,條件是知道其索引。下例演示瞭如何刪除前述列表中的第二個元素 —— 'yamaha' :

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

del motorcycles[1]

print(motorcycles)

下面的輸出表明,已經將第二款摩托車從列表中刪除了:

['honda', 'yamaha', 'suzuki']

['honda', 'suzuki']

在這兩個示例中,使用 del 語句將值從列表中刪除後,你就無法再訪問它了。

2. 使用方法 pop() 刪除元素

有時候,你要將元素從列表中刪除,並接著使用它的值。例如,你可能需要獲取剛被射殺的外星人的 x 和 y 座標,以便在相應的位置顯示爆炸效果;在 Web 應用程式中,你可能

要將使用者從活躍成員列表中刪除,並將其加入到非活躍成員列表中。

方法 pop() 可刪除列表末尾的元素,並讓你能夠接著使用它。術語 彈出 ( pop )源自這樣的類比:列表就像一個棧,而刪除列表末尾的元素相當於彈出棧頂元素。

下面從列表 motorcycles 中彈出一款摩托車:

❶ motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles)

❷ popped_motorcycle = motorcycles.pop()

❸ print(motorcycles)

❹ print(popped_motorcycle)

我們首先定義並列印了列表 motorcycles (見❶)。接下來,我們從這個列表中彈出一個值,並將其儲存到變數 popped_motorcycle 中(見❷)。然後我們列印這個列

表,以核實從其中刪除了一個值(見❸)。最後,我們列印彈出的值,以證明我們依然能夠訪問被刪除的值(見❹)。

輸出表明,列表末尾的值 'suzuki' 已刪除,它現在儲存在變數 popped_motorcycle 中:

['honda', 'yamaha', 'suzuki']

['honda', 'yamaha']

suzuki

方法 pop() 是怎麼起作用的呢?假設列表中的摩托車是按購買時間儲存的,就可使用方法 pop() 列印一條訊息,指出最後購買的是哪款摩托車:

motorcycles = ['honda', 'yamaha', 'suzuki']

last_owned = motorcycles.pop()

print("The last motorcycle I owned was a " + last_owned.title() + ".")

輸出是一個簡單的句子,指出了最新購買的是哪款摩托車:

The last motorcycle I owned was a Suzuki.

3. 彈出列表中任何位置處的元素

實際上,你可以使用 pop() 來刪除列表中任何位置的元素,只需在括號中指定要刪除的元素的索引即可。

motorcycles = ['honda', 'yamaha', 'suzuki']

❶ first_owned = motorcycles.pop(0)

❷ print('The first motorcycle I owned was a ' + first_owned.title() + '.')

首先,我們彈出了列表中的第一款摩托車(見❶),然後列印了一條有關這輛摩托車的訊息(見❷)。輸出是一個簡單的句子,描述了我購買的第一輛摩托車:

The first motorcycle I owned was a Honda.

別忘了,每當你使用 pop() 時,被彈出的元素就不再在列表中了。

如果你不確定該使用 del 語句還是 pop() 方法,下面是一個簡單的判斷標準:如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用 del 語句;如果你要在刪除元

素後還能繼續使用它,就使用方法 pop() 。

4. 根據值刪除元素

有時候,你不知道要從列表中刪除的值所處的位置。如果你只知道要刪除的元素的值,可使用方法 remove() 。

例如,假設我們要從列表 motorcycles 中刪除值 'ducati' 。

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']

print(motorcycles)

❶ motorcycles.remove('ducati')

print(motorcycles)

❶ 處的程式碼讓 Python 確定 'ducati' 出現在列表的什麼地方,並將該元素刪除:

['honda', 'yamaha', 'suzuki', 'ducati']

['honda', 'yamaha', 'suzuki']

使用 remove() 從列表中刪除元素時,也可接著使用它的值。下面刪除值 'ducati' ,並列印一條訊息,指出要將其從列表中刪除的原因:

❶ motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']

print(motorcycles)

❷ too_expensive = 'ducati'

❸ motorcycles.remove(too_expensive)

print(motorcycles)

❹ print(" A " + too_expensive.title() + " is too expensive for me.")

在❶處定義列表後,我們將值 'ducati' 儲存在變數 too_expensive 中(見❷)。接下來,我們使用這個變數來告訴 Python 將哪個值從列表中刪除(見❸)。最後,

值 'ducati' 已經從列表中刪除,但它還儲存在變數 too_expensive 中(見❹),讓我們能夠列印一條訊息,指出將 'ducati' 從列表 motorcycles 中刪除的原因:

['honda', 'yamaha', 'suzuki', 'ducati']

['honda', 'yamaha', 'suzuki']

A Ducati is too expensive for me.

>

注意 方法 remove() 只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用迴圈來判斷是否刪除了所有這樣的值。你將在第 7 章學習如何這

樣做。

動手試一試

下面的練習比第 2 章的練習要複雜些,但讓你有機會以前面介紹過的各種方式使用列表。

3-4 嘉賓名單 :如果你可以邀請任何人一起共進晚餐(無論是在世的還是故去的),你會邀請哪些人?請建立一個列表,其中包含至少 3 個你想邀請的人;然後,使用

這個列表列印訊息,邀請這些人來與你共進晚餐。

3-5 修改嘉賓名單 :你剛得知有位嘉賓無法赴約,因此需要另外邀請一位嘉賓。

以完成練習 3-4 時編寫的程式為基礎,在程式末尾新增一條 print 語句,指出哪位嘉賓無法赴約。

修改嘉賓名單,將無法赴約的嘉賓的姓名替換為新邀請的嘉賓的姓名。

再次列印一系列訊息,向名單中的每位嘉賓發出邀請。

3-6 新增嘉賓 :你剛找到了一個更大的餐桌,可容納更多的嘉賓。請想想你還想邀請哪三位嘉賓。

以完成練習 3-4 或練習 3-5 時編寫的程式為基礎,在程式末尾新增一條 print 語句,指出你找到了一個更大的餐桌。

使用 insert() 將一位新嘉賓新增到名單開頭。

使用 insert() 將另一位新嘉賓新增到名單中間。

使用 append() 將最後一位新嘉賓新增到名單末尾。

列印一系列訊息,向名單中的每位嘉賓發出邀請。

3-7 縮減名單 :你剛得知新購買的餐桌無法及時送達,因此只能邀請兩位嘉賓。

以完成練習 3-6 時編寫的程式為基礎,在程式末尾新增一行程式碼,列印一條你只能邀請兩位嘉賓共進晚餐的訊息。

使用 pop() 不斷地刪除名單中的嘉賓,直到只有兩位嘉賓為止。每次從名單中彈出一位嘉賓時,都列印一條訊息,讓該嘉賓知悉你很抱歉,無法邀請他來共進

晚餐。

對於餘下的兩位嘉賓中的每一位,都列印一條訊息,指出他依然在受邀人之列。

使用 del 將最後兩位嘉賓從名單中刪除,讓名單變成空的。列印該名單,核實程式結束時名單確實是空的。

3.3 組織列表

在你建立的列表中,元素的排列順序常常是無法預測的,因為你並非總能控制使用者提供資料的順序。這雖然在大多數情況下都是不可避免的,但你經常需要以特定的順序呈現信

息。有時候,你希望保留列表元素最初的排列順序,而有時候又需要調整排列順序。 Python 提供了很多組織列表的方式,可根據具體情況選用。

3.3.1 使用方法 sort() 對列表進行永久性排序

Python 方法 sort() 讓你能夠較為輕鬆地對列表進行排序。假設你有一個汽車列表,並要讓其中的汽車按字母順序排列。為簡化這項任務,我們假設該列表中的所有值都是小寫

的。

cars.py

cars = ['bmw', 'audi', 'toyota', 'subaru']

❶ cars.sort()

print(cars)

方法 sort() (見❶)永久性地修改了列表元素的排列順序。現在,汽車是按字母順序排列的,再也無法恢復到原來的排列順序:

['audi', 'bmw', 'subaru', 'toyota']

你還可以按與字母順序相反的順序排列列表元素,為此,只需向 sort() 方法傳遞引數 reverse=True 。下面的示例將汽車列表按與字母順序相反的順序排列:

cars = ['bmw', 'audi', 'toyota', 'subaru']

cars.sort(reverse=True)

print(cars)

同樣,對列表元素排列順序的修改是永久性的:

['toyota', 'subaru', 'bmw', 'audi']

3.3.2 使用函式 sorted() 對列表進行臨時排序

要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函式 sorted() 。函式 sorted() 讓你能夠按特定順序顯示列表元素,同時不影響它們在列表中的原始排

列順序。

下面嘗試對汽車列表呼叫這個函式。

cars = ['bmw', 'audi', 'toyota', 'subaru']

❶ print("Here is the original list:")

print(cars)

❷ print(" Here is the sorted list:")

print(sorted(cars))

❸ print(" Here is the original list again:")

print(cars)

我們首先按原始順序列印列表(見❶),再按字母順序顯示該列表(見❷)。以特定順序顯示列表後,我們進行核實,確認列表元素的排列順序與以前相同(見❸)。

Here is the original list:

['bmw', 'audi', 'toyota', 'subaru']

Here is the sorted list:

['audi', 'bmw', 'subaru', 'toyota']

❹ Here is the original list again:

['bmw', 'audi', 'toyota', 'subaru']

注意,呼叫函式 sorted() 後,列表元素的排列順序並沒有變(見❹)。如果你要按與字母順序相反的順序顯示列表,也可向函式 sorted() 傳遞引數 reverse=True 。

注意 在並非所有的值都是小寫時,按字母順序排列列表要複雜些。決定排列順序時,有多種解讀大寫字母的方式,要指定準確的排列順序,可能比我們這裡所做的

要複雜。然而,大多數排序方式都基於本節介紹的知識。

3.3.3 倒著列印列表

要反轉列表元素的排列順序,可使用方法 reverse() 。假設汽車列表是按購買時間排列的,可輕鬆地按相反的順序排列其中的汽車:

cars = ['bmw', 'audi', 'toyota', 'subaru']

print(cars)

cars.reverse()

print(cars)

注意, reverse() 不是指按與字母順序相反的順序排列列表元素,而只是反轉列表元素的排列順序:

['bmw', 'audi', 'toyota', 'subaru']

['subaru', 'toyota', 'audi', 'bmw']

方法 reverse() 永久性地修改列表元素的排列順序,但可隨時恢復到原來的排列順序,為此只需對列表再次呼叫 reverse() 即可。

3.3.4 確定列表的長度

使用函式 len() 可快速獲悉列表的長度。在下面的示例中,列表包含 4 個元素,因此其長度為 4 :

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']

>>> len(cars)

4

在你需要完成如下任務時, len() 很有用:確定還有多少個外星人未被射殺,需要管理多少項視覺化資料,網站有多少註冊使用者等。

注意 Python 計算列表元素數時從 1 開始,因此確定列表長度時,你應該不會遇到差一錯誤。

動手試一試

3-8 放眼世界 :想出至少 5 個你渴望去旅遊的地方。

將這些地方儲存在一個列表中,並確保其中的元素不是按字母順序排列的。

按原始排列順序列印該列表。不要考慮輸出是否整潔的問題,只管列印原始 Python 列表。

使用 sorted() 按字母順序列印這個列表,同時不要修改它。

再次列印該列表,核實排列順序未變。

使用 sorted() 按與字母順序相反的順序列印這個列表,同時不要修改它。

再次列印該列表,核實排列順序未變。

使用 reverse() 修改列表元素的排列順序。列印該列表,核實排列順序確實變了。

使用 reverse() 再次修改列表元素的排列順序。列印該列表,核實已恢復到原來的排列順序。

使用 sort() 修改該列表,使其元素按字母順序排列。列印該列表,核實排列順序確實變了。

使用 sort() 修改該列表,使其元素按與字母順序相反的順序排列。列印該列表,核實排列順序確實變了。

3-9 晚餐嘉賓 :在完成練習 3-4~ 練習 3-7 時編寫的程式之一中,使用 len() 列印一條訊息,指出你邀請了多少位嘉賓來與你共進晚餐。

3-10 嘗試使用各個函式 :想想可儲存到列表中的東西,如山嶽、河流、國家、城市、語言或你喜歡的任何東西。編寫一個程式,在其中建立一個包含這些元素的列

表,然後,對於本章介紹的每個函式,都至少使用一次來處理這個列表。

3.4 使用列表時避免索引錯誤

剛開始使用列表時,經常會遇到一種錯誤。假設你有一個包含三個元素的列表,卻要求獲取第四個元素:

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles[3])

這將導致 索引錯誤 :

Traceback (most recent call last):

File "motorcycles.py", line 3, in <module>

print(motorcycles[3])

IndexError: list index out of range

Python 試圖向你提供位於索引 3 處的元素,但它搜尋列表 motorcycles 時,卻發現索引 3 處沒有元素。鑑於列表索引差一的特徵,這種錯誤很常見。有些人從 1 開始數,因此以為

第三個元素的索引為 3 ;但在 Python 中,第三個元素的索引為 2 ,因為索引是從 0 開始的。

索引錯誤意味著 Python 無法理解你指定的索引。程式發生索引錯誤時,請嘗試將你指定的索引減 1 ,然後再次執行程式,看看結果是否正確。

別忘了,每當需要訪問最後一個列表元素時,都可使用索引 -1 。這在任何情況下都行之有效,即便你最後一次訪問列表後,其長度發生了變化:

motorcycles = ['honda', 'yamaha', 'suzuki']

print(motorcycles[-1])

索引 -1 總是返回最後一個列表元素,這裡為值 'suzuki' :

'suzuki'

僅當列表為空時,這種訪問最後一個元素的方式才會導致錯誤:

motorcycles = []

print(motorcycles[-1])

列表 motorcycles 不包含任何元素,因此 Python 返回一條索引錯誤訊息:

Traceback (most recent call last):

File "motorcyles.py", line 3, in <module>

print(motorcycles[-1])

IndexError: list index out of range

注意 發生索引錯誤卻找不到解決辦法時,請嘗試將列表或其長度打印出來。列表可能與你以為的截然不同,在程式對其進行了動態處理時尤其如此。通過檢視列表

或其包含的元素數,可幫助你找出這種邏輯錯誤。

動手試一試

3-11 有意引發錯誤 :如果你還沒有在程式中遇到過索引錯誤,就嘗試引發一個這種錯誤。在你的一個程式中,修改其中的索引,以引發索引錯誤。關閉程式前,務

必消除這個錯誤。

3.5 小結

在本章中,你學習了:列表是什麼以及如何使用其中的元素;如何定義列表以及如何增刪元素;如何對列表進行永久性排序,以及如何為展示列表而進行臨時排序;如何確定列

表的長度,以及在使用列表時如何避免索引錯誤。

在第 4 章,你將學習如何以更高效的方式處理列表元素。通過使用為數不多的幾行程式碼來遍歷列表元素,你就能高效地處理它們,即便列表包含數千乃至數百萬個元素。

4.1 遍歷整個列表

你經常需要遍歷列表的所有元素,對每個元素執行相同的操作。例如,在遊戲中,可能需要將每個介面元素平移相同的距離;對於包含數字的列表,可能需要對每個元素執行相

同的統計運算;在網站中,可能需要顯示文章列表中的每個標題。需要對列表中的每個元素都執行相同的操作時,可使用 Python 中的 for 迴圈。

假設我們有一個魔術師名單,需要將其中每個魔術師的名字都打印出來。為此,我們可以分別獲取名單中的每個名字,但這種做法會導致多個問題。例如,如果名單很長,將包

含大量重複的程式碼。另外,每當名單的長度發生變化時,都必須修改程式碼。通過使用 for 迴圈,可讓 Python 去處理這些問題。

下面使用 for 迴圈來列印魔術師名單中的所有名字:

magicians.py

❶ magicians = ['alice', 'david', 'carolina']

❷ for magician in magicians:

❸ print(magician)

首先,我們像第 3 章那樣定義了一個列表(見❶)。接下來,我們定義了一個 for 迴圈(見❷);這行程式碼讓 Python 從列表 magicians 中取出一個名字,並將其儲存在變

量 magician 中。最後,我們讓 Python 列印前面儲存到變數 magician 中的名字(見❸)。這樣,對於列表中的每個名字, Python 都將重複執行❷處和❸處的程式碼行。你可以這

樣解讀這些程式碼:對於列表 magicians 中的每位魔術師,都將其名字打印出來。輸出很簡單,就是列表中所有的姓名:

alice

david

carolina

4.1.1 深入地研究迴圈

迴圈這種概念很重要,因為它是讓計算機自動完成重複工作的常見方式之一。例如,在前面的 magicians.py 中使用的簡單迴圈中, Python 將首先讀取其中的第一行程式碼:

for magician in magicians:

這行程式碼讓 Python 獲取列表 magicians 中的第一個值( 'alice' ),並將其儲存到變數 magician 中。接下來, Python 讀取下一行程式碼:

print(magician)

它讓 Python 列印 magician 的值 —— 依然是 'alice' 。鑑於該列表還包含其他值, Python 返回到迴圈的第一行:

for magician in magicians:

Python 獲取列表中的下一個名字 —— 'david' ,並將其儲存到變數 magician 中,再執行下面這行程式碼:

print(magician)

Python 再次列印變數 magician 的值 —— 當前為 'david' 。接下來, Python 再次執行整個迴圈,對列表中的最後一個值 —— 'carolina' 進行處理。至此,列表中沒有其他的值

了,因此 Python 接著執行程式的下一行程式碼。在這個示例中, for 迴圈後面沒有其他的程式碼,因此程式就此結束。

剛開始使用迴圈時請牢記,對列表中的每個元素,都將執行迴圈指定的步驟,而不管列表包含多少個元素。如果列表包含一百萬個元素, Python 就重複執行指定的步驟一百萬次,

且通常速度非常快。

另外,編寫 for 迴圈時,對於用於儲存列表中每個值的臨時變數,可指定任何名稱。然而,選擇描述單個列表元素的有意義的名稱大有幫助。例如,對於小貓列表、小狗列表和

一般性列表,像下面這樣編寫 for 迴圈的第一行程式碼是不錯的選擇:

for cat in cats:

for dog in dogs:

for item in list_of_items:

這些命名約定有助於你明白 for 迴圈中將對每個元素執行的操作。使用單數和複數式名稱,可幫助你判斷程式碼段處理的是單個列表元素還是整個列表。

4.1.2 在 for 迴圈中執行更多的操作

在 for 迴圈中,可對每個元素執行任何操作。下面來擴充套件前面的示例,對於每位魔術師,都列印一條訊息,指出他的表演太精彩了。

magicians = ['alice', 'david', 'carolina']

for magician in magicians:

❶ print(magician.title() + ", that was a great trick!")

相比於前一個示例,唯一的不同是對於每位魔術師,都列印了一條以其名字為擡頭的訊息(見❶)。這個迴圈第一次迭代時,變數 magician 的值為 'alice' ,因此 Python 列印

的第一條訊息的擡頭為 'Alice' 。第二次迭代時,訊息的擡頭為 'David' ,而第三次迭代時,擡頭為 'Carolina' 。

下面的輸出表明,對於列表中的每位魔術師,都列印了一條個性化訊息:

Alice, that was a great trick!

David, that was a great trick!

Carolina, that was a great trick!

在 for 迴圈中,想包含多少行程式碼都可以。在程式碼行 for magician in magicians 後面,每個縮排的程式碼行都是迴圈的一部分,且將針對列表中的每個值都執行一次。因

此,可對列表中的每個值執行任意次數的操作。

下面再新增一行程式碼,告訴每位魔術師,我們期待他的下一次表演:

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 語句都縮進了,因此它們都將針對列表中的每位魔術師執行一次。第二條 print 語句中的換行符 " " (見❶)在每次迭代結束後都插入一個空行,從而整潔地

將針對各位魔術師的訊息編組:

Alice, that was a great trick!

I can't wait to see your next trick, Alice.

David, that was a great trick!

I can't wait to see your next trick, David.

Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.

在 for 迴圈中,想包含多少行程式碼都可以。實際上,你會發現使用 for 迴圈對每個元素執行眾多不同的操作很有用。

4.1.3 在 for 迴圈結束後執行一些操作

for 迴圈結束後再怎麼做呢?通常,你需要提供總結性輸出或接著執行程式必須完成的其他任務。

在 for 迴圈後面,沒有縮排的程式碼都只執行一次,而不會重複執行。下面來列印一條向全體魔術師致謝的訊息,感謝他們的精彩表演。想要在列印給各位魔術師的訊息後面列印

一條給全體魔術師的致謝訊息,需要將相應的程式碼放在 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!")

你在前面看到了,開頭兩條 print 語句針對列表中每位魔術師重複執行。然而,由於第三條 print 語句沒有縮排,因此只執行一次:

Alice, that was a great trick!

I can't wait to see your next trick, Alice.

David, that was a great trick!

I can't wait to see your next trick, David.

Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.

Thank you, everyone. That was a great magic show!

使用 for 迴圈處理資料是一種對資料集執行整體操作的不錯的方式。例如,你可能使用 for 迴圈來初始化遊戲 —— 遍歷角色列表,將每個角色都顯示到螢幕上;再在迴圈後面添

加一個不縮排的程式碼塊,在螢幕上繪製所有角色後顯示一個 Play Now 按鈕