在 Python 列表中的 del、remove 和 pop 方法區別的介紹

Aliaksei Yursha 2023年1月30日
  1. Python 列表按值刪除
  2. Python 列表按索引刪除
  3. Python 列表刪除 del 語句
在 Python 列表中的 del、remove 和 pop 方法區別的介紹

就跟我們知道的一樣,Python 提供了幾種方法來實現同一效果。

如果需要從列表中刪除元素,則可以使用 list.remove()list.pop() 函式或內建 del 語句。

在下面的示例中,我們將對每種方法進行介紹,並討論它們之間的差異和取捨。

Python 列表按值刪除

list.remove() 刪除列表中的第一個值等於傳入的引數的元素。使用此方法時,通常不知道或不在乎要刪除的元素的索引是什麼。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.remove('Cindy')
>>> names
['Bob', 'Noah']

使用此方法時要小心。如果列表中不存在你要刪除的元素,則 Python 執行時將丟擲 ValueError

>>> names = ['Bob', 'Noah']
>>> names.remove('Cindy')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

要解決此問題,你必須先檢查列表中是否存在該元素,然後再使用 list.remove() 來刪除它。

>>> names = ['Bob', 'Noah']
>>> if 'Cindy' in names:
...   names.remove('Cindy')
...
>>>

Python 列表按索引刪除

如果知道要刪除的元素的索引,則可以使用 list.pop() 方法。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop(1)
'Cindy'
>>> names
['Bob', 'Noah']

list.pop() 刪除指定索引處的元素並返回它。

如果你不給賦予任何索引給 list.pop(),它將刪除列表的最後一個元素。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop()
'Noah'
>>> names
['Bob', 'Cindy']

Python 列表刪除 del 語句

按索引從列表中刪除元素的另一種方法是使用 del 內建語句。del 語句與 list.pop() 方法不同,該語句不返回刪除的值。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[1]
>>> names
['Bob', 'Noah']

del 語句也比 list.pop() 更加靈活。你可以使用它從列表中指定要刪除值的索引範圍。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[0:2]
>>> names
['Noah']

你也可以使用它清除整個列表。

>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[:]
>>> names
[]

從上面可以看到,每種方法的使用方法都略有不同。儘管如此,如果你只需要從列表中刪除單個元素而不記住其值,那麼每種方法都可以來使用。

相關文章 - Python List