Найти - Пользователи
Полная версия: Генератор на Python: как сравнить следующий элемент с текущим?
Начало » Python для новичков » Генератор на Python: как сравнить следующий элемент с текущим?
1
martin
Требуется обработать очень большой массив объектов из БД, суть обработки в том что следует в цикле сравнить каждый текущий элемент массива со следующим (и кое что делать в случае совпадения определенных условий). Я так понимаю что лучше написать генератор с yield, но не пойму как в нем получить доступ к следующему элементу, помимо текущего?

 def power():
    for i in xrange(0, 10):
        yield i
krok64
Запоминай предыдущий элемент. И сравнивай его с текущим.
FishHook
martin
Требуется обработать очень большой массив объектов из БД
Если у вас уже имеется массив объектов, то генератор вам ничем не поможет.
ZerG
Может проще сразу запросом из базы вытянуть список елементов на которыми надо произвести действия и обработать их?
vic57
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)
>>> 
py.user.next
vic57, видишь, там next зелёненькое? Это потому, что next() - это встроенная функция. Часто в паре используются iter() и next(). Но вообще она нужна для взятия следующего элемента в любом итераторе или генераторе.
vic57
py.user.next ну это для примера, обозвать можно по другому
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB