Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2017 14:36:08

martin
От:
Зарегистрирован: 2010-10-29
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор на Python: как сравнить следующий элемент с текущим?

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

 def power():
    for i in xrange(0, 10):
        yield i



Офлайн

#2 Авг. 9, 2017 14:38:33

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Генератор на Python: как сравнить следующий элемент с текущим?

Запоминай предыдущий элемент. И сравнивай его с текущим.

Офлайн

#3 Авг. 9, 2017 14:58:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Генератор на Python: как сравнить следующий элемент с текущим?

martin
Требуется обработать очень большой массив объектов из БД
Если у вас уже имеется массив объектов, то генератор вам ничем не поможет.



Офлайн

#4 Авг. 9, 2017 15:59:38

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Генератор на Python: как сравнить следующий элемент с текущим?

Может проще сразу запросом из базы вытянуть список елементов на которыми надо произвести действия и обработать их?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Авг. 9, 2017 16:12:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Генератор на Python: как сравнить следующий элемент с текущим?

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)
>>> 

Офлайн

#6 Авг. 10, 2017 05:01:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10014
Репутация: +  857  -
Профиль   Отправить e-mail  

Генератор на Python: как сравнить следующий элемент с текущим?

vic57, видишь, там next зелёненькое? Это потому, что next() - это встроенная функция. Часто в паре используются iter() и next(). Но вообще она нужна для взятия следующего элемента в любом итераторе или генераторе.



Отредактировано py.user.next (Авг. 10, 2017 05:01:44)

Офлайн

#7 Авг. 11, 2017 14:33:38

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Генератор на Python: как сравнить следующий элемент с текущим?

py.user.next ну это для примера, обозвать можно по другому

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version