你建立的大多數列表都將是動態的,這意味着列表建立後,將隨着程序的運行增刪元素。例如,你建立一個遊戲,要求玩家射殺從天而降的外星人;爲此,可在開始時將一些外星人存儲在列表中,而後每當有外星人被射殺時,都將其從列表中刪除,而每次有新的外星人出如今屏幕上時,都將其添加到列表中。在整個遊戲運行期間,外星人列表的長度將不斷變化。app
修改列表元素
修改列表元素的語法與訪問列表元素的語法相似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。
例如,假設有一個摩托車列表,其中的第一個元素爲'honda' ,如何修改它的值呢?
咱們首先定義一個摩托車列表,其中的第一個元素爲'honda' 。接下來,咱們將第一個元素的值改成'ducati' 。輸出代表,第一個元素的值確實變了,但
其餘列表元素的值沒變:
ide
motorcycles = ['honda', 'yamaha', 'suzuki']網站
print(motorcycles)索引
motorcycles[0] = 'harley'遊戲
print(motorcycles)rem
複製代碼it
你能夠修改任何列表元素的值,而不單單是第一個元素的值。 ast
在列表中添加元素
你可能出於衆多緣由要在列表中添加新元素,例如,你可能但願遊戲中出現新的外星人、添加可視化數據或給網站添加新註冊的用戶。Python提供了多種在既有列表中添加新數據的方式。
class
- 在列表末尾添加元素
在列表中添加新元素時,最簡單的方式是將元素附加到列表末尾。給列表附加元素時,它將添加到列表末尾。繼續使用前一個示例中的列表,在其末尾添加新元素'ducati' :
motorcycles = ['honda', 'yamaha', 'suzuki']變量
print(motorcycles)
motorcycles.append('harley')
print(motorcycles)
複製代碼
方法append() 將元素'harley' 添加到了列表末尾,而不影響列表中的其餘全部元素:
方法append() 讓動態地建立列表易如反掌,例如,你能夠先建立一個空列表,再使用一系列的append() 語句添加元素。下面來建立一個空列表,再在其中添加元素'honda' 、'yamaha' 和'suzuki' :
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles)
複製代碼
最終的列表與前述示例中的列表徹底相同:
這種建立列表的方式極其常見,由於常常要等程序運行後,你才知道用戶要在程序中存儲哪些數據。爲控制用戶,可首先建立一個空列表,用於存儲用戶將要輸入的值,而後將用戶提供的每一個新值附加到列表中。
- 在列表中插入元素
使用方法insert() 可在列表的任何位置添加新元素。爲此,你須要指定新元素的索引和值。
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
複製代碼
在這個示例中,值'ducati' 被插入到了列表開頭;方法insert() 在索引0 處添加空間,並將值'ducati' 存儲到這個地方。這種操做將列表中既有的每一個元素都右
移一個位置:
3.2.3
從列表中刪除元素
你常常須要從列表中刪除一個或多個元素。例如,玩家將空中的一個外星人射殺後,你極可能要將其從存活的外星人列表中刪除;當用戶在你建立的Web應用中註銷其帳戶時,
你須要將該用戶從活躍用戶列表中刪除。你能夠根據位置或值來刪除列表中的元素。
- 使
使用
用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 語句將值從列表中刪除後,你就沒法再訪問它了。 - 使
使用
用方
方法
法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. - 彈
彈出
出列
列表
表中
中任
任何
何位
位置
置處
處的
的元
元素
素
實際上,你能夠使用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() 。 - 根
根據
據值
值刪
刪除
除元
元素
素
有時候,你不知道要從列表中刪除的值所處的位置。若是你只知道要刪除的元素的值,可以使用方法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() 只刪除第一個指定的值。若是要刪除的值可能在列表中出現屢次,就須要使用循環來判斷是否刪除了全部這樣的值。