Python刪除列表元素的3種方法,你都會嗎?

發表於2024-02-27

在這裡插入圖片描述

刪除列表元素的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種方法,大家學會了嗎?

相關文章