你創(chuàng)建的大多數(shù)列表都將是動(dòng)態(tài)的,,這意味著列表創(chuàng)建后,,將隨著程序的運(yùn)行增刪元素。例如,,你創(chuàng)建一個(gè)游戲,,要求玩家射殺從天而降的外星人;為此,,可在開(kāi)始時(shí)將一些外星人存儲(chǔ)在列表中,,然后每當(dāng)有外星人被射殺時(shí),都將其從列表中刪除,,而每次有新的外星人出現(xiàn)在屏幕上時(shí),,都將其添加到列表中。在整個(gè)游戲運(yùn)行期間,,外星人列表的長(zhǎng)度將不斷變化,。
修改列表元素 修改列表元素的語(yǔ)法與訪問(wèn)列表元素的語(yǔ)法類(lèi)似。要修改列表元素,可指定列表名和要修改的元素的索引,,再指定該元素的新值,。 例如,假設(shè)有一個(gè)摩托車(chē)列表,,其中的第一個(gè)元素為'honda' ,,如何修改它的值呢? 我們首先定義一個(gè)摩托車(chē)列表,,其中的第一個(gè)元素為'honda' ,。接下來(lái),我們將第一個(gè)元素的值改為'ducati' ,。輸出表明,,第一個(gè)元素的值確實(shí)變了,但 其他列表元素的值沒(méi)變:
motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) motorcycles[0] = 'harley' print(motorcycles)
復(fù)制代碼
你可以修改任何列表元素的值,,而不僅僅是第一個(gè)元素的值,。
在列表中添加元素 你可能出于眾多原因要在列表中添加新元素,例如,,你可能希望游戲中出現(xiàn)新的外星人,、添加可視化數(shù)據(jù)或給網(wǎng)站添加新注冊(cè)的用戶,。Python提供了多種在既有列表中添加新數(shù)據(jù)的方式,。 1. 在列表末尾添加元素 在列表中添加新元素時(shí),,最簡(jiǎn)單的方式是將元素附加到列表末尾。給列表附加元素時(shí),,它將添加到列表末尾,。繼續(xù)使用前一個(gè)示例中的列表,,在其末尾添加新元素'ducati' :motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) motorcycles.append('harley') print(motorcycles)
復(fù)制代碼 方法append() 將元素'harley' 添加到了列表末尾,,而不影響列表中的其他所有元素:
方法append() 讓動(dòng)態(tài)地創(chuàng)建列表易如反掌,,例如,你可以先創(chuàng)建一個(gè)空列表,,再使用一系列的append() 語(yǔ)句添加元素,。下面來(lái)創(chuàng)建一個(gè)空列表,,再在其中添加元素'honda' 、'yamaha' 和'suzuki' :motorcycles = [] motorcycles.append('honda') motorcycles.append('yamaha') motorcycles.append('suzuki') print(motorcycles)
復(fù)制代碼 最終的列表與前述示例中的列表完全相同:
這種創(chuàng)建列表的方式極其常見(jiàn),因?yàn)榻?jīng)常要等程序運(yùn)行后,,你才知道用戶要在程序中存儲(chǔ)哪些數(shù)據(jù),。為控制用戶,,可首先創(chuàng)建一個(gè)空列表,,用于存儲(chǔ)用戶將要輸入的值,,然后將用戶提供的每個(gè)新值附加到列表中。
2. 在列表中插入元素 使用方法insert() 可在列表的任何位置添加新元素,。為此,,你需要指定新元素的索引和值。
motorcycles = ['honda', 'yamaha', 'suzuki'] motorcycles.insert(0, 'ducati') print(motorcycles)
復(fù)制代碼 在這個(gè)示例中,,值'ducati' 被插入到了列表開(kāi)頭;方法insert() 在索引0 處添加空間,,并將值'ducati' 存儲(chǔ)到這個(gè)地方,。這種操作將列表中既有的每個(gè)元素都右 移一個(gè)位置:
3.2.3 從列表中刪除元素 你經(jīng)常需要從列表中刪除一個(gè)或多個(gè)元素,。例如,玩家將空中的一個(gè)外星人射殺后,,你很可能要將其從存活的外星人列表中刪除,;當(dāng)用戶在你創(chuàng)建的Web應(yīng)用中注銷(xiāo)其賬戶時(shí),, 你需要將該用戶從活躍用戶列表中刪除,。你可以根據(jù)位置或值來(lái)刪除列表中的元素,。 1. 使 使用 用del 語(yǔ) 語(yǔ)句 句刪 刪除 除元 元素 素 如果知道要?jiǎng)h除的元素在列表中的位置,,可使用del 語(yǔ)句。 motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) ? del motorcycles[0] print(motorcycles) ? 處的代碼使用del 刪除了列表motorcycles 中的第一個(gè)元素——'honda' : ['honda', 'yamaha', 'suzuki'] ['yamaha', 'suzuki']使用del 可刪除任何位置處的列表元素,,條件是知道其索引。下例演示了如何刪除前述列表中的第二個(gè)元素——'yamaha' : motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) del motorcycles[1] print(motorcycles) 下面的輸出表明,已經(jīng)將第二款摩托車(chē)從列表中刪除了: ['honda', 'yamaha', 'suzuki'] ['honda', 'suzuki'] 在這兩個(gè)示例中,,使用del 語(yǔ)句將值從列表中刪除后,,你就無(wú)法再訪問(wèn)它了。 2. 使 使用 用方 方法 法pop() 刪 刪除 除元 元素 素 有時(shí)候,你要將元素從列表中刪除,,并接著使用它的值。例如,,你可能需要獲取剛被射殺的外星人的 x 和 y 坐標(biāo),,以便在相應(yīng)的位置顯示爆炸效果,;在Web應(yīng)用程序中,,你可能 要將用戶從活躍成員列表中刪除,,并將其加入到非活躍成員列表中,。 方法pop() 可刪除列表末尾的元素,,并讓你能夠接著使用它。術(shù)語(yǔ)彈 彈出 出 (pop)源自這樣的類(lèi)比:列表就像一個(gè)棧,,而刪除列表末尾的元素相當(dāng)于彈出棧頂元素,。 下面從列表motorcycles 中彈出一款摩托車(chē): ? motorcycles = ['honda', 'yamaha', 'suzuki'] print(motorcycles) ? popped_motorcycle = motorcycles.pop() ? print(motorcycles) ? print(popped_motorcycle) 我們首先定義并打印了列表motorcycles (見(jiàn)?),。接下來(lái),,我們從這個(gè)列表中彈出一個(gè)值,,并將其存儲(chǔ)到變量popped_motorcycle 中(見(jiàn)?),。然后我們打印這個(gè)列 表,,以核實(shí)從其中刪除了一個(gè)值(見(jiàn)?)。最后,,我們打印彈出的值,,以證明我們依然能夠訪問(wèn)被刪除的值(見(jiàn)?)。 輸出表明,,列表末尾的值'suzuki' 已刪除,,它現(xiàn)在存儲(chǔ)在變量popped_motorcycle 中: ['honda', 'yamaha', 'suzuki'] ['honda', 'yamaha'] suzuki 方法pop() 是怎么起作用的呢?假設(shè)列表中的摩托車(chē)是按購(gòu)買(mǎi)時(shí)間存儲(chǔ)的,,就可使用方法pop() 打印一條消息,,指出最后購(gòu)買(mǎi)的是哪款摩托車(chē): motorcycles = ['honda', 'yamaha', 'suzuki'] last_owned = motorcycles.pop() print("The last motorcycle I owned was a " + last_owned.title() + ".") 輸出是一個(gè)簡(jiǎn)單的句子,指出了最新購(gòu)買(mǎi)的是哪款摩托車(chē): The last motorcycle I owned was a Suzuki. 3. 彈 彈出 出列 列表 表中 中任 任何 何位 位置 置處 處的 的元 元素 素 實(shí)際上,,你可以使用pop() 來(lái)刪除列表中任何位置的元素,,只需在括號(hào)中指定要?jiǎng)h除的元素的索引即可。 motorcycles = ['honda', 'yamaha', 'suzuki'] ? first_owned = motorcycles.pop(0) ? print('The first motorcycle I owned was a ' + first_owned.title() + '.') 首先,,我們彈出了列表中的第一款摩托車(chē)(見(jiàn)?),,然后打印了一條有關(guān)這輛摩托車(chē)的消息(見(jiàn)?)。輸出是一個(gè)簡(jiǎn)單的句子,,描述了我購(gòu)買(mǎi)的第一輛摩托車(chē): The first motorcycle I owned was a Honda. 別忘了,,每當(dāng)你使用pop() 時(shí),被彈出的元素就不再在列表中了,。 如果你不確定該使用del 語(yǔ)句還是pop() 方法,,下面是一個(gè)簡(jiǎn)單的判斷標(biāo)準(zhǔn):如果你要從列表中刪除一個(gè)元素,且不再以任何方式使用它,就使用del 語(yǔ)句,;如果你要在刪除元 素后還能繼續(xù)使用它,,就使用方法pop() 。 4. 根 根據(jù) 據(jù)值 值刪 刪除 除元 元素 素 有時(shí)候,,你不知道要從列表中刪除的值所處的位置,。如果你只知道要?jiǎng)h除的元素的值,可使用方法remove() ,。 例如,,假設(shè)我們要從列表motorcycles 中刪除值'ducati' 。motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] print(motorcycles) ? motorcycles.remove('ducati') print(motorcycles) ? 處的代碼讓Python確定'ducati' 出現(xiàn)在列表的什么地方,,并將該元素刪除: ['honda', 'yamaha', 'suzuki', 'ducati'] ['honda', 'yamaha', 'suzuki'] 使用remove() 從列表中刪除元素時(shí),,也可接著使用它的值。下面刪除值'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' 存儲(chǔ)在變量too_expensive 中(見(jiàn)?),。接下來(lái),,我們使用這個(gè)變量來(lái)告訴Python將哪個(gè)值從列表中刪除(見(jiàn)?)。最后,, 值'ducati' 已經(jīng)從列表中刪除,,但它還存儲(chǔ)在變量too_expensive 中(見(jiàn)?),讓我們能夠打印一條消息,,指出將'ducati' 從列表motorcycles 中刪除的原因: ['honda', 'yamaha', 'suzuki', 'ducati'] ['honda', 'yamaha', 'suzuki'] A Ducati is too expensive for me. > 注 注意 意 方法remove() 只刪除第一個(gè)指定的值,。如果要?jiǎng)h除的值可能在列表中出現(xiàn)多次,就需要使用循環(huán)來(lái)判斷是否刪除了所有這樣的值,。 |
|