Я работаю над улучшением своего питона и повышением скорости на генераторах. У меня есть объект, над которым я работаю, для обработки ряда событий. Я хочу, чтобы список событий вытягивался последовательно и с помощью различных методов. Я хочу использовать генераторы для этой цели (я знаю, что я могу написать что-то еще, чтобы сделать это без них).Python Generator/Iterator
Вот пример кода, который я работал на:
def _get_next_event():
def gen():
for i,event in enumerate(range(1,10)):
yield event
iterator = gen()
def run():
return iterator
run.next = iterator.__next__
return run
t = _get_next_event()
t.next()
for x in t():
if x < 5:
print(x)
else:
break
t.next()
Это позволяет мне сделать цикл по событиям, а также тянуть следующий индивидуально с помощью следующего метода функции.
Я реализую это в моем классе, это выглядит следующим образом:
def _get_next_event(self):
def gen():
print(self.all_sessions)
for event in self.all_sessions:
yield event['event']
iterator = gen()
def run():
return iterator
run.next = iterator.__next__
return run
Однако, прежде чем он работает в классе у меня есть, чтобы запустить его, например, до того, как цикл у меня есть один из них:
self._get_next_event = self._get_next_event()
Я думаю, что должен быть более элегантный способ сделать это ... что мне не хватает?
Правильно, что код просто покажите вам, с чем я работаю. Цель состоит в том, чтобы вытащить предметы из генератора. В цикле я хочу вытащить из него дополнительные элементы, тогда эти элементы не должны включаться в следующую итерацию цикла. – browskie