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.
Zamknięte. To pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 6 lat temu . Popraw to pytanie Szukam narzędzia, które weźmie dokument wystąpienia XML i wyprowadzi odpowiedni schemat XSD. Z pewnością zdaję sobie …
Czy istnieje proste wyrażenie generatora, które może dać nieskończone elementy? To jest kwestia czysto teoretyczna. Nie ma tu potrzeby "praktycznej" odpowiedzi :) Na przykład łatwo jest utworzyć skończony generator: my_gen = (0 for i in xrange(42)) Jednak aby stworzyć nieskończoną, muszę „zanieczyścić” moją przestrzeń nazw fałszywą funkcją: def _my_gen(): while …
Mam przykładowy kod w Pythonie, który muszę naśladować w C ++. Nie potrzebuję żadnego konkretnego rozwiązania (np. Rozwiązania oparte na wspólnych rutynach wydajności, chociaż byłyby one również akceptowalnymi odpowiedziami), po prostu muszę w jakiś sposób odtworzyć semantykę. Pyton Jest to podstawowy generator sekwencji, wyraźnie zbyt duży, aby przechowywać zmaterializowaną wersję. …
string.split()zwraca instancję listy . Czy istnieje wersja, która zamiast tego zwraca generator ? Czy są jakieś powody, aby nie mieć wersji generatora?
Bardzo podstawowe pytanie - jak uzyskać jedną wartość z generatora w Pythonie? Jak dotąd stwierdziłem, że mogę go zdobyć, pisząc gen.next(). Chcę się tylko upewnić, że to właściwy sposób?
W Pythonie można łatwo zdefiniować funkcję iteratora, umieszczając słowo kluczowe yield w treści funkcji, na przykład: def gen(): for i in range(100): yield i Jak mogę zdefiniować funkcję generatora, która nie daje żadnej wartości (generuje wartości 0), poniższy kod nie działa, ponieważ Python nie może wiedzieć, że ma to być …
Niedawno napisałem funkcję do generowania pewnych sekwencji z nietrywialnymi ograniczeniami. Problem pojawił się z naturalnym rozwiązaniem rekurencyjnym. Teraz zdarza się, że nawet dla stosunkowo niewielkich danych wejściowych sekwencje są po kilka tysięcy, dlatego wolałbym użyć mojego algorytmu jako generatora, zamiast wypełniać listę wszystkimi sekwencjami. Oto przykład. Załóżmy, że chcemy obliczyć …
Czy w Pythonie jest jakaś różnica między tworzeniem obiektu generatora za pomocą wyrażenia generatora a użyciem instrukcji yield ? Korzystanie z wydajności : def Generator(x, y): for i in xrange(x): for j in xrange(y): yield(i, j) Korzystanie z wyrażenia generatora : def Generator(x, y): return ((i, j) for i in …
Chciałbym wiedzieć, co się stanie, gdy przekażę wynik funkcji generatora do metody enumerate () w języku Python. Przykład: def veryBigHello(): i = 0 while i < 10000000: i += 1 yield "hello" numbered = enumerate(veryBigHello()) for i, word in numbered: print i, word Czy wyliczenie powtarza się leniwie, czy też …
Być może padłem ofiarą dezinformacji w sieci, ale wydaje mi się, że jest bardziej prawdopodobne, że coś źle zrozumiałem. Opierając się na tym, czego się do tej pory nauczyłem, range () jest generatorem, a generatory mogą być używane jako iteratory. Jednak ten kod: myrange = range(10) print(next(myrange)) daje mi ten …
Możliwy duplikat: Jak podzielić listę na równe części w Pythonie? Dziwię się, że nie mogłem znaleźć funkcji „wsadowej”, która jako dane wejściowe przyjęłaby iterowalną wartość i zwróciłaby iterowalną funkcję iterowalną. Na przykład: for i in batch(range(0,10), 1): print i [0] [1] ... [9] lub: for i in batch(range(0,10), 3): print …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.