如何按值从Python列表中删除项目?

Dav*_* K. -1 python list

如果我想通过其值而不是索引删除项目,我该怎么办?

animals = ['tiger', 'snake', 'penguin','giraffe']
Run Code Online (Sandbox Code Playgroud)

说我想删除'penguin'而不打字del animals[2]我怎么去呢?

我试过打字,del animals['penguin']但它不起作用......

Mar*_*ers 6

您必须找到索引,或过滤列表.

寻找指数:

del animals[animals.index('penguin')]
Run Code Online (Sandbox Code Playgroud)

或者,您可以删除值:

animals.remove('penguin')
Run Code Online (Sandbox Code Playgroud)

其中list.remove()记录为被equilalent到del listobj[listobj.index(value)]以上版本.

这些中的任何一个都可以引发IndexErrorif 'penguin'不是列表的一部分.如果列表中有多个值的副本,则仅删除第一个此类副本.

过滤将删除所有此类副本:

animals = [a for a in animals if a != 'penguin']
Run Code Online (Sandbox Code Playgroud)

这不会引起例外; 它构建了一个全新的值列表,等于'penguin'.