在对象列表中查找对象的最有效方法

时间:2014-10-09 12:25:02

标签: python arrays list

我有一个对象的列表或数组(python中正确的术语是什么?)。 使所有对象与条件匹配的最有效方法是什么?

我可以遍历列表并检查每个元素,但这看起来效率不高。

objects = []
for object in list:
  if object.value == "123":
    objects.add(object)

2 个答案:

答案 0 :(得分:6)

这是最简单的方法:

objects = [x for x in someList if x.value == 123]

如果您正在寻找更快的解决方案,您必须告诉我们有关您的对象以及如何构建源列表的更多信息。例如,如果相关属性在对象中是唯一的,则使用dict而不是list可以获得更好的性能。另一种选择是保持列表排序并使用bisect而不是线性搜索。但要注意,当列表变得非常大时,这些优化工作才有意义,如果你的元素少于500个,只需使用理解并停止担心。

答案 1 :(得分:2)

您可以使用filter

objects = filter(lambda i: i.value == '123', l)

自我注意
显然"filter vs list comp"辩论开始了火焰战争。