[英]How do I remove an item from a Python list by value?
如果我想按項目的值而不是其索引刪除項目,我該怎么辦?
animals = ['tiger', 'snake', 'penguin','giraffe']
假設我想刪除'penguin'
而不輸入del animals[2]
,我將如何處理?
我嘗試過輸入del animals['penguin']
但是它不起作用...
您必須找到索引或過濾列表。
查找索引:
del animals[animals.index('penguin')]
或者,您可以刪除該值:
animals.remove('penguin')
其中list.remove()
被證明與上面的del listobj[listobj.index(value)]
版本del listobj[listobj.index(value)]
。
如果'penguin'
不在列表中,則這兩種方法都會引發IndexError
。 如果列表中值的副本多於一個 ,則僅刪除該副本的第一個副本。
過濾將刪除所有此類副本:
animals = [a for a in animals if a != 'penguin']
這不會引發異常; 它建立了一個不等於'penguin'
的值的全新列表。
animals.remove("penguin")
對? 授予它只會刪除第一個值,但是它將按值而不是索引刪除它。 並且不需要構建新列表或需要額外的調用來查找給定值的索引。
Martijn Pieters沒有提到的另一種過濾列表的方法是使用內置的過濾功能:
animals = filter(lambda x: x != 'penguin', animals)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.