mylist = ['dogs', 'cats', 'cats']
如果我输入mylist.remove('cats')
,它只删除我列表中的一只猫,但我想删除列表中没有循环的所有猫,因为循环会以我想要的方式崩溃。
答案 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']