Perguntas com a marcação «generator»

Um gerador é uma generalização de uma sub-rotina, usada principalmente para simplificar a escrita de iteradores. O comando yield em um gerador não especifica uma co-rotina para a qual saltar, mas passa um valor de volta para uma rotina pai.

10195
O que a palavra-chave "yield" faz?

Qual é o uso da yieldpalavra - chave em Python e o que ela faz? Por exemplo, estou tentando entender esse código 1 : def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < self._median: yield self._leftchild if self._rightchild and...

232
O que significa yield em PHP?

Recentemente, deparei-me com este código: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } Eu nunca vi essa yieldpalavra - chave antes. Tentando executar o código que recebo Erro de análise: erro de sintaxe, T_VARIABLE inesperado na linha x Então, qual...

218
Entendendo geradores em Python

Atualmente, estou lendo o livro de receitas Python e atualmente estou olhando para geradores. Estou achando difícil de entender. Como eu venho de um background em Java, existe um equivalente em Java? O livro estava falando sobre 'Produtor / Consumidor', no entanto, quando ouço isso, penso em...

188
Como juntar dois geradores em Python?

Eu quero mudar o seguinte código for directory, dirs, files in os.walk(directory_1): do_something() for directory, dirs, files in os.walk(directory_2): do_something() para este código: for directory, dirs, files in os.walk(directory_1) + os.walk(directory_2): do_something() Eu recebo o...

153
Redefinindo o objeto gerador em Python

Eu tenho um objeto gerador retornado por vários rendimentos. A preparação para chamar esse gerador é uma operação bastante demorada. É por isso que quero reutilizar o gerador várias vezes. y = FunctionWithYield() for x in y: print(x) #here must be something to reset 'y' for x in y:...