如何删除列表中的所有实例名称?

0 投票
3 回答
3666 浏览
提问于 2025-04-16 13:35

可能重复的问题:
从Python列表中删除所有值的出现

mylist = ['dogs', 'cats', 'cats']

如果我输入 mylist.remove('cats'),它只会删除我列表中的一只猫,但我想一次性删除列表中的所有猫,而且不想用循环,因为用循环会导致我想要的效果崩溃。

补充说明:这个问题有点复杂,比如说,崩溃的原因是我正在开发一个模块,用来从列表中删除相同的元素。mylist[i] 首先返回的是狗,我把它删掉了,但在下一个循环中,mylist[i] 不再返回狗,而是返回猫。这就是我想要一次性删除所有相同元素,而不管索引循环的原因。

3 个回答

0

如果提供的列表副本不需要在原地修改,我建议使用过滤器。

>>> x = itertools.ifilter(lambda x: x != 'foo', ['foo', 'foo', 'bar'])
>>> x
<itertools.ifilter object at 0xb70ba2ec>
>>> list(x)
['bar']
1

没有内置的方法可以直接从列表中删除所有元素。你需要使用一个循环来实现。下面这段代码有什么问题呢:

In [129]: x=['dog','cat','cat']
In [136]: [elt for elt in x if elt!='cat']
Out[136]: ['dog']

?

6

你可以用一种叫做列表推导式的方法来创建一个新的列表,这样就不需要写一个明确的循环了:

mylist = [item for item in mylist if item != 'cats']

撰写回答