如何删除列表中的所有实例名称?
可能重复的问题:
从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']