Форум сайта python.su
0
Требуется обработать очень большой массив объектов из БД, суть обработки в том что следует в цикле сравнить каждый текущий элемент массива со следующим (и кое что делать в случае совпадения определенных условий). Я так понимаю что лучше написать генератор с yield, но не пойму как в нем получить доступ к следующему элементу, помимо текущего?
def power(): for i in xrange(0, 10): yield i
Офлайн
11
Запоминай предыдущий элемент. И сравнивай его с текущим.
Офлайн
568
martinЕсли у вас уже имеется массив объектов, то генератор вам ничем не поможет.
Требуется обработать очень большой массив объектов из БД
Офлайн
61
Может проще сразу запросом из базы вытянуть список елементов на которыми надо произвести действия и обработать их?
Офлайн
martin
def power():
for i in xrange(0, 10):
yield i
l = range(10) >>> prev = l[0] >>> for i in l[1:]: next = i print(prev,next) prev = next (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) (5, 6) (6, 7) (7, 8) (8, 9) >>>
Офлайн
857
vic57, видишь, там next зелёненькое? Это потому, что next() - это встроенная функция. Часто в паре используются iter() и next(). Но вообще она нужна для взятия следующего элемента в любом итераторе или генераторе.
Отредактировано py.user.next (Авг. 10, 2017 05:01:44)
Офлайн
py.user.next ну это для примера, обозвать можно по другому
Офлайн