У меня очень большой список объектов, и мне нужно найти все объекты с одинаковым атрибутом (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, но можно ли запустить цикл for для ограниченных итераций, как в C?
Я не хочу перебирать весь список, так как это будет медленнее, и одно из требований этого скрипта заключается в том, что он должен быть быстрым и эффективным. Он будет работать на действительно больших наборах данных, и мы смотрим на время выполнения 10-12 часов. Заранее спасибо!