Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中删除具有特定属性值的项_Python_Python 2.7 - Fatal编程技术网

Python 从列表中删除具有特定属性值的项

Python 从列表中删除具有特定属性值的项,python,python-2.7,Python,Python 2.7,给定一个对象列表,其中每个对象都有一个名为x的属性,我想从列表中删除其x属性包含值v的所有对象 一种方法是使用列表理解:[item for item in mylist if item.x!=v],但由于我的列表很小,通常小于10。另一种方法是在循环中遍历列表并检查每个项目 还有第三种方法同样快或更快吗?使用列表理解语法创建一个新列表。我认为你做得再快不过了。列表越小越好。您还可以使用生成器或过滤器功能。选择你认为最可读的;效率在这一点上并不重要,尤其是当你只处理几个元素时。如果列表很小,你根本

给定一个对象列表,其中每个对象都有一个名为x的属性,我想从列表中删除其x属性包含值v的所有对象

一种方法是使用列表理解:[item for item in mylist if item.x!=v],但由于我的列表很小,通常小于10。另一种方法是在循环中遍历列表并检查每个项目


还有第三种方法同样快或更快吗?

使用列表理解语法创建一个新列表。我认为你做得再快不过了。列表越小越好。

您还可以使用生成器或过滤器功能。选择你认为最可读的;效率在这一点上并不重要,尤其是当你只处理几个元素时。

如果列表很小,你根本不应该关心速度。写任何可读性更强的东西。您描述的两种方式在功能上是相同的。你为什么需要第三条路?此外,如果您的列表很小,则没有实际的理由使其更快。“迭代并删除”选项通常是一个糟糕的主意,因为您要么必须通过索引进行迭代,而且很麻烦、很慢、很难看,要么使用list.removevalue,这意味着您将针对每个值对列表进行迭代,大大增加了你所做工作的复杂性。列表理解或生成器表达式是这里最好的解决方案。而且,正如其他人所说,对于十项来说,这根本不重要。只需做最容易阅读的事情——可能是列表comp,然后继续。过早优化是一个糟糕的想法。