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

时间:2011-03-13 01:02:46

标签: python

  

可能重复:
  Remove all occurences of a value from a Python list

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

如果我输入mylist.remove('cats'),它只删除我列表中的一只猫,但我想删除列表中没有循环的所有猫,因为循环会以我想要的方式崩溃。

编辑:这是一个小技巧来解释,例如,它会崩溃因为我正在尝试开发一个模块来从列表中删除相同的元素。 mylist [i]首先返回狗,我删除了它,但是在另一个循环之后,mylist [i]不再返回狗了,而是猫。这就是为什么我想删除单个语句中的所有实例而不管索引循环。

3 个答案:

答案 0 :(得分:6)

您可以创建一个包含列表推导的新列表,以避免显式循环:

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

答案 1 :(得分:1)

没有用于从列表中删除所有元素的内置方法。你必须使用循环。有什么问题:

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

答案 2 :(得分:0)

除非必须在场内修改提供的列表副本,否则我建议过滤。

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