Python 从列表中删除具有特定属性值的项
给定一个对象列表,其中每个对象都有一个名为x的属性,我想从列表中删除其x属性包含值v的所有对象 一种方法是使用列表理解:[item for item in mylist if item.x!=v],但由于我的列表很小,通常小于10。另一种方法是在循环中遍历列表并检查每个项目Python 从列表中删除具有特定属性值的项,python,python-2.7,Python,Python 2.7,给定一个对象列表,其中每个对象都有一个名为x的属性,我想从列表中删除其x属性包含值v的所有对象 一种方法是使用列表理解:[item for item in mylist if item.x!=v],但由于我的列表很小,通常小于10。另一种方法是在循环中遍历列表并检查每个项目 还有第三种方法同样快或更快吗?使用列表理解语法创建一个新列表。我认为你做得再快不过了。列表越小越好。您还可以使用生成器或过滤器功能。选择你认为最可读的;效率在这一点上并不重要,尤其是当你只处理几个元素时。如果列表很小,你根本
还有第三种方法同样快或更快吗?使用列表理解语法创建一个新列表。我认为你做得再快不过了。列表越小越好。您还可以使用生成器或过滤器功能。选择你认为最可读的;效率在这一点上并不重要,尤其是当你只处理几个元素时。如果列表很小,你根本不应该关心速度。写任何可读性更强的东西。您描述的两种方式在功能上是相同的。你为什么需要第三条路?此外,如果您的列表很小,则没有实际的理由使其更快。“迭代并删除”选项通常是一个糟糕的主意,因为您要么必须通过索引进行迭代,而且很麻烦、很慢、很难看,要么使用list.removevalue,这意味着您将针对每个值对列表进行迭代,大大增加了你所做工作的复杂性。列表理解或生成器表达式是这里最好的解决方案。而且,正如其他人所说,对于十项来说,这根本不重要。只需做最容易阅读的事情——可能是列表comp,然后继续。过早优化是一个糟糕的想法。