Pytania oznaczone «generator»

Generator jest uogólnieniem podprogramu, używanym głównie w celu uproszczenia pisania iteratorów. Instrukcja yield w generatorze nie określa procedury, do której należy przejść, ale raczej przekazuje wartość z powrotem do procedury nadrzędnej.

290
Leniwa metoda odczytu dużego pliku w Pythonie?

Mam bardzo duży plik 4 GB i kiedy próbuję go odczytać, komputer zawiesza się. Więc chcę czytać go kawałek po kawałku, a po przetworzeniu każdego elementu przechowywać przetworzony kawałek w innym pliku i czytać następny kawałek. Czy istnieje jakaś metoda na yieldte elementy? Chciałbym mieć leniwą...

232
Co oznacza wydajność w PHP?

Niedawno natknąłem się na ten kod: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } Nigdy wcześniej nie widziałem tego yieldsłowa kluczowego. Próbuję uruchomić kod Błąd analizy: błąd składni, nieoczekiwany T_VARIABLE w linii x Czym jest to yieldsłowo...

218
Zrozumienie generatorów w Pythonie

W tej chwili czytam książkę kucharską Pythona i obecnie patrzę na generatory. Trudno mi się odwrócić. Skoro pochodzę z języka Java, czy istnieje odpowiednik języka Java? Książka mówiła o „producencie / konsumentie”, ale kiedy słyszę, że myślę o wątkach. Co to jest generator i dlaczego miałbyś go...

187
Jak połączyć dwa generatory w Pythonie?

Chcę zmienić następujący kod for directory, dirs, files in os.walk(directory_1): do_something() for directory, dirs, files in os.walk(directory_2): do_something() do tego kodu: for directory, dirs, files in os.walk(directory_1) + os.walk(directory_2): do_something() Dostaję błąd:...

166
Jak zbudować tablicę numpy z generatora?

Jak mogę zbudować tablicę numpy z obiektu generatora? Pozwólcie, że zilustruję problem: >>> import numpy >>> def gimme(): ... for x in xrange(10): ... yield x ... >>> gimme() <generator object at 0x28a1758> >>> list(gimme()) [0, 1, 2, 3, 4, 5, 6, 7, 8,...

153
Resetowanie obiektu generatora w Pythonie

Mam obiekt generatora zwrócony przez wielokrotną wydajność. Przygotowanie do wywołania tego generatora jest raczej czasochłonną operacją. Dlatego chcę kilka razy ponownie użyć generatora. y = FunctionWithYield() for x in y: print(x) #here must be something to reset 'y' for x in y:...