for i in df:
yield i
class Currency:
def __init__(self, handler):
self.handler = handler
self.arr = []
@property
def res(self):
for s in currencies:
tmp = []
for i in self.handler:
tmp += i[s]['sell'].buy.unique().tolist()
tmp.remove(0)
tmp += i[s]['buy'].sell.unique().tolist()
tmp.remove(0)
self.arr.append(copy.copy(list(set(tmp))))
return self.arr
s = Handler()
h = Currency(s.handler(ddf))
res = h.res
подскажите что я не так делаю? или как нужно это правильно реализовать?
у меня в цикле for а именно при второй итерации в currencies 2й раз генератор не запускается
но когда я его вывожу из функции (эти 2 цикла) то все работает как надо...
Ну так генератор же работает ровно один раз.
ну смотри я вывел этот кусок кода из класса а там он сработал больше 1го раза я же его в цикле использую
for s in currencies: tmp = [] for i in self.handler: tmp += i[s]['sell'].buy.unique().tolist() tmp.remove(0) tmp += i[s]['buy'].sell.unique().tolist() tmp.remove(0) self.arr.append(copy.copy(list(set(tmp)))) т.е так без класса все работает
У тебя в for s in currencies при первом проходе выбирается весь датафрейм из генератора и всё, он пустой.
Так? Без класса? И чему равно self?
@amarovita и тут также?
на самом деле я запустил так (без класса) for z in currencies: for i in s.handler(ddf): print(z)
def gen(): yield 1 yield 2 yield 3 g = gen() for n in range(3): for x in g: print(x) print('But:') for n in range(3): for x in gen(): print(x) Запусти и почувствуй разницу.
спасибо, теперь понял)
Обсуждают сегодня