簡體   English   中英

如何按值從Python列表中刪除項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM