【編測編學】零基礎學python_07_列表(修改、新增和刪除元素)

bcbxhome發表於2020-11-19

你建立的大多數列表都將是動態的,這意味著列表建立後,將隨著程式的執行增刪元素。例如,你建立一個遊戲,要求玩家射殺從天而降的外星人;為此,可在開始時將一些外星人儲存在列表中,然後每當有外星人被射殺時,都將其從列表中刪除,而每次有新的外星人出現在螢幕上時,都將其新增到列表中。在整個遊戲執行期間,外星人列表的長度將不斷變化。


修改列表元素
修改列表元素的語法與訪問列表元素的語法類似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。 
例如,假設有一個摩托車列表,其中的第一個元素為'honda' ,如何修改它的值呢?
我們首先定義一個摩托車列表,其中的第一個元素為'honda' 。接下來,我們將第一個元素的值改為'ducati' 。輸出表明,第一個元素的值確實變了,但 
其他列表元素的值沒變: 

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

  2. print(motorcycles)

  3. motorcycles[0] = 'harley'

  4. print(motorcycles)

複製程式碼



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

在列表中新增元素 
你可能出於眾多原因要在列表中新增新元素,例如,你可能希望遊戲中出現新的外星人、新增視覺化資料或給網站新增新註冊的使用者。Python提供了多種在既有列表中新增新資料的方式。 
1. 在列表末尾新增元素
在列表中新增新元素時,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將新增到列表末尾。繼續使用前一個示例中的列表,在其末尾新增新元素'ducati' :

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

  2. print(motorcycles)

  3. motorcycles.append('harley')

  4. print(motorcycles)

複製程式碼


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

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

  1. motorcycles = []

  2. motorcycles.append('honda')

  3. motorcycles.append('yamaha')

  4. motorcycles.append('suzuki')

  5. print(motorcycles)

複製程式碼


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

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



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

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

  2. motorcycles.insert(0, 'ducati')

  3. print(motorcycles)

複製程式碼

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

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("\nA " + 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() 只刪除第一個指定的值。如果要刪除的值可能在列表中出現多次,就需要使用迴圈來判斷是否刪除了所有這樣的值。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985967/viewspace-2735315/,如需轉載,請註明出處,否則將追究法律責任。

相關文章