刪除列表元素的3種方法
根據下標刪除,使用del關鍵詞
names = ['張三', '李四', '王五', '趙六‘, ’羅翔', '盧錫安']
print(names)
#刪除第3個元素,del是delete的縮寫
del names[2]
#再次列印會發生王五不見了
print(names)
注:del是一個關鍵詞,而不是一個函式所以不是使用小括號:del(names[2]),而是使用空格:del names[2]
刪除報錯
根據下標刪除必須保證下標是存在的,否則程式會報錯:
names = ['張三', '李四']
#刪除第3個元素,這裡會報IndexError錯誤,因為只有2個元素,無法刪除第3個
del names[2]
# 報錯:IndexError: list assignment index out of range
為了防止報錯,讓程式更加穩定可靠,我們可以先判斷一下再刪除:
names = ['張三', '李四']
#先使用len函式判斷是否長度不小於3,才執行刪除操作
if len(names) >= 3:
del names[2]
使用pop方法刪除
除了使用del關鍵詞,還可以使用pop方法來刪除元素,而且pop有幾個特點:
- pop不指定下標時,預設會刪除最後一個
- pop也可以指定下標,刪除指定位置的元素。如果下標非法,也會丟擲IndexError
- pop會返回當前刪掉的值給name變數,而del不能返回,僅僅是執行刪除操作
names = ['張三', '李四', '王五', '趙六‘, ’羅翔', '盧錫安']
#刪除最後1個元素
name = names.pop()
print(name)
#刪除倒數第2個元素
name = names.pop(-2)
print(name)
根據值刪除
有時候我們不知道元素的下標,就想要刪除某個特定的值,這時候使用remove方法。
names = ['張三', '李四', '王五', '趙六‘, ’羅翔', '盧錫安']
#刪掉趙六
n = names.remove('趙六')
print(n)
刪除值報錯
如果被刪除的值不存在,程式會報一個ValueError錯誤,因為要刪除的不存在。
names = ['張三', '李四', '王五', '趙六‘, ’羅翔', '盧錫安']
#下面一行會報ValueError錯誤,因為列表中沒有王八。
n = names.remove('德萊文')
為了防止報錯,我們可以使用in關鍵詞,先判定要刪除的值是否在列表中:
#使用in關鍵詞判斷王八是否在列表中
if '德萊文' in names:
n = names.remove('德萊文')
print(n)
in關鍵詞是一個Python的運算子,用來判斷前面的元素(王八)是否在後面的列表中(names)。in也可以應用本章後面學到的元組,字典中。
應用
寫一段程式刪除列表中所有的uzi:
#列表中可以包含重複的元素
champions = ['theshy', 'uzi', 'rookie', 'jackeylove', 'duke', 'faker', 'viper', 'uzi']
#透過while迴圈,判定names中是否還有uzi,如果還有就繼續刪除
while 'uzi' in champions:
champions.remove('uzi')
print(champions)
以上,就是Python刪除列表元素的3種方法,大家學會了嗎?