从列表中移除具有特定属性值的项
假设你有一个物品列表,每个物品都有一个叫做 x
的属性。现在你想把所有 x
属性值等于 v
的物品从这个列表中删除。
一种方法是使用列表推导式,也就是用 [item for item in mylist if item.x != v]
这种写法。不过因为我的列表很小(通常少于10个物品),所以还有另一种方法,就是用循环逐个检查列表里的每个物品。
那么有没有第三种方法,速度一样快或者更快呢?
2 个回答
1
用列表推导的语法来创建一个新列表。我觉得没有比这个更快的方法了。即使你的列表很小,这样反而更好。
1
你也可以使用生成器或者filter
函数。选择你觉得最容易理解的方式就好;在这个时候,效率其实并不是最重要的(特别是当你只处理几个元素的时候)。