在 Python 列表中的 del、remove 和 pop 方法區別的介紹
Aliaksei Yursha
2023年1月30日
2019年12月26日
就跟我們知道的一樣,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
[]
從上面可以看到,每種方法的使用方法都略有不同。儘管如此,如果你只需要從列表中刪除單個元素而不記住其值,那麼每種方法都可以來使用。