【发布时间】:2011-10-18 08:38:04
【问题描述】:
我有一个非常大的对象列表,我需要找到所有具有相同属性 (any_object.any_attribute) 的对象,然后将它们附加到一个新列表中。所以我已经对它们进行了预排序并运行了二进制搜索算法。 我找到了具有匹配属性的对象,但问题是这样的对象不止一个(它们是邻居),但我无法找到一种在这些连续对象上运行循环的干净方法,以便它们都可以附加。我的代码粘贴在下面。
low = 0
high = len(sortedObjects)
while low < high:
mid = (low + high)/2
if sortedObjects[mid].attr < desired_attr:
low = mid + 1
elif sortedSamples[mid].attr > desired_attr:
high = mid
else:
newList.append(sortedObjects[mid])
break
所以我需要在最后一个 else 块中编写一些新代码,该代码将遍历所有具有相同属性的对象并附加它们。听起来需要一个 for 循环,但是否可以像在 C 中那样为有限的迭代运行一个 for 循环?
我不想遍历整个列表,因为这样会比较慢,而且这个脚本的要求之一是它必须快速高效。它将在非常大的数据集上运行,我们正在研究 10-12 小时的执行时间。提前致谢!
【问题讨论】: