J.....L
J.....L
#naukaprogramowania #python #testyjednostkowe #codewars z pozoru dość proste zadanie z Codewars w Pythonie. Program jako argumenty bierze jakaś listę oraz jakąś zmienną.
Program sprawdza sprawdza lokację tej zmiennej w liscie, oraz wypisuje następną w kolejnosci wartość z listy. Programik napisany szybko, wszystko smiga tylko jednego testu nie może przejść. Może ktoś miał do czynienia z czymś podobnym, chodzi mi o tą linijkę :
Test.assertequals(nextitem(iter(range(1, 30000)), 12), 13)

czy jest iterator, który generuje wartości od 1 do 30000 w odstępach co 12 ?
  • Najlepsze
  • Wszystkie komentarze
a.....e
a.....e
@JungleJamPL: nie da sie odpalic len na generatorach
legolass
legolass
@JungleJamPL: Dostajesz obiekt, którego nie akceptuje metoda len(). Musisz zmienić pętlę for, żeby uniknąć wywołania len().
l.....i
l.....i
@JungleJamPL: for index, item in enumerate (xs):
J.....L
J.....L
@luzny_lori: wlaśnie jest to dość mylące, bo funkcja musi dotyczyć inputów z generatora jak i zwyklych list
a.....e
a.....e
@luzny_lori: co ci da index?
a.....e
a.....e
@JungleJamPL: to nie przejdzie zlozonosci pamieciowej
J.....L
J.....L
@alekhine: faktycznie, niestety ale nie przeskoczylo
a.....e
a.....e
@JungleJamPL: tu jest napisane, ze dostal dane ale nie wypisal wyniku

generatory/ iteratory nie po to sa zebys je na liste zamienial
przyklad:
masz 1000000000000000 danych zwracanych przez generator(moze nawet zwracac nieskonczona ilosc danych), ale element ktory szukasz jest na 1 pozycji
l.....i
l.....i
@alekhine: tak, po chwili do mnie dotarło że chciałem mu dać antidotum na latanie po indeksach, żeby mógł się odwołać do następnej wartości w strukturze, ale to wciąż jest generator. jakiś next i łapanie StopIteration by się jeszcze przydało...