Aktywne Wpisy
Pust3lnick +7
Cześć. Jako że od ponad 10 lat mam prawo jazdy B i zawsze chciałem spróbować swoich sił na motocyklu postanowiłem zakupić sobie 125 żeby spełnić wreszcie swoje małe marzenie. Jest tylko jeden problem - na żadnym motorze nigdy nie jeździłem, wiem tylko jak się tym jeździ w teorii z internetu, ale praktycznie nie mam ani minuty doświadczenia, a gdybym tą 125 zakupił, to miałbym ponad 40 km drogi powrotnej do pokonania nim
Tak wygląda depresja
#python
A len musi zliczyć wszystkie elementy, których ilość jest nieznana w generatorze, bo generator będzie wypluwał coś na żądanie dopóki coś jest i teoretycznie może się nigdy nie skończyć.
Jeśli generator implementuje funkcję
__len__
to zadziała, np.range(10).__len__()
. Ale to jest raczej wyjątek.Jeśli chcesz dowiedzieć się, ile jest elementów w generatorze to możesz je policzyć, np.
sum(1 for x in generator)
(o ile jest ich skończona liczba). Po tej operacji generator będzie pusty.czy możesz dodawać kolejne liczby z nieskończonego generatora?
czy możesz podać długość nieskończonej struktury?
Albo:
czy możesz dodawać kolejne liczby
czy możesz zliczać kolejne elementy
albo:
czy możesz podać sumę liczb
czy możesz podać długość struktury
len()
jest zabezpieczone, tylkosorted()
jest funkcją na wyższym poziomie abstrakcji.-
sorted()
pobiera element iterowalny. Generator takim jest.https://docs.python.org/3/library/functions.html#sorted
-
len()
tak naprawdę nie istnieje (a raczej normalnie nic nie umie zrobić - istnieje tylko nazwa wbudowana). To jest ładna nazwa dla wewnętrznej metody__len__()
zaimplementowanej wewnątrz danej klasy. A klasa generatora nie umie zwracać nic pod__len__()
. Mógłbyś sobie napisać swoją klasę która umiałaby@powiemjedno: len nie liczy ilości elementów z listy, ale w zasadzie to wczytuje z pamięci jej długość zapisaną w strukturze (przynajmniej w cPythonie)