Questions tagged «generator»

生成器是子例程的泛化,主要用于简化迭代器的编写。生成器中的yield语句未指定要跳转到的协程,而是将值传递回父例程。

30
“ yield”关键字有什么作用?
yield关键字在Python中的用途是什么? 例如,我试图理解这段代码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 distance + max_dist >= self._median: yield self._rightchild 这是呼叫者: result, candidates = [], [self] while candidates: node = candidates.pop() distance = node._get_dist(obj) if distance <= max_dist and distance >= min_dist: result.extend(node._values) …



8
Ruby on Rails生成模型field:type-field:type的选项是什么?
我试图生成一个新模型,却忘记了引用另一个模型ID的语法。我自己检查一下,但是在我所有的Ruby on Rails文档链接中,我还没有弄清楚如何找到确定的源。 $ rails g model Item name:string description:text(这里是reference:product或references:product)。但是更好的问题是,将来我在哪里或如何轻松地寻找这种愚蠢? 注意:我已经学到了很难的方法,如果我输错了这些选项之一并运行迁移,那么Ruby on Rails将会完全破坏我的数据库...并且rake db:rollback无能为力。我敢肯定,我只是不了解某些东西,但是直到我明白了……返回的“详细”信息rails g model仍然让我抓不住……

11
在Python中读取大文件的惰性方法?
我有一个很大的文件4GB,当我尝试读取它时,计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将处理后的块存储到另一个文件中并读取下一个块。 yield这些零件有什么方法吗? 我很想有一个懒惰的方法。


8
在PHP中yield是什么意思?
我最近偶然发现了以下代码: function xrange($min, $max) { for ($i = $min; $i <= $max; $i++) { yield $i; } } 我以前从未看过这个yield关键字。尝试运行我得到的代码 解析错误:语法错误,第x行上的意外T_VARIABLE 那么这个yield关键字是什么呢?它甚至是有效的PHP吗?如果是,该如何使用?

12
了解Python中的生成器
我目前正在阅读Python食谱,目前正在研究生成器。我发现很难回头。 我来自Java的背景,是否有Java的等效语言?这本书讲的是“生产者/消费者”,但是当我听说线程的时候。 什么是发电机,为什么要使用它?显然,无需引用任何书籍(除非您可以直接从书籍中找到一个体面,简单的答案)。也许举一些例子,如果您感到慷慨!
218 python  generator 


7
如何从生成器中仅选择一项(在python中)?
我有一个类似下面的生成器函数: def myfunct(): ... yield result 调用此函数的常用方法是: for r in myfunct(): dostuff(r) 我的问题是,有什么方法可以随时从生成器中获取一个元素吗?例如,我想做类似的事情: while True: ... if something: my_element = pick_just_one_element(myfunct()) dostuff(my_element) ...

10
如何在Python中加入两个生成器?
我想更改以下代码 for directory, dirs, files in os.walk(directory_1): do_something() for directory, dirs, files in os.walk(directory_2): do_something() 此代码: for directory, dirs, files in os.walk(directory_1) + os.walk(directory_2): do_something() 我得到了错误: +不支持的操作数类型:“ generator”和“ generator” 如何在Python中加入两个生成器?
187 python  generator 

5
如何从生成器构建numpy数组?
如何从生成器对象构建numpy数组? 让我说明一下这个问题: >>> 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, 9] >>> numpy.array(xrange(10)) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> numpy.array(gimme()) array(<generator …
166 python  numpy  generator 

9
如何检查对象是否是python中的生成器对象?
在python中,如何检查对象是否为生成器对象? 试试这个- >>> type(myobject, generator) 给出错误- Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'generator' is not defined (我知道我可以检查对象是否具有next将其用作生成器的方法,但我想使用某种方法可以确定任何对象的类型,而不仅仅是生成器。)
157 python  generator 

18
是否有一种机制在ES6(ECMAScript 6)中循环x次而没有可变变量?
xJavaScript中循环时间的典型方法是: for (var i = 0; i < x; i++) doStuff(i); 但我根本不想使用++运算符或根本没有任何可变变量。那么在ES6中是否有x另一种方法可以循环计时?我喜欢Ruby的机制: x.times do |i| do_stuff(i) end JavaScript / ES6有什么相似之处吗?我可以作弊,然后自己制作发电机: function* times(x) { for (var i = 0; i < x; i++) yield i; } for (var i of times(5)) { console.log(i); } 当然我还在用i++。至少它不可见:),但是我希望ES6中有更好的机制。

17
在Python中重置生成器对象
我有一个由多个yield返回的生成器对象。准备调用此生成器是相当耗时的操作。这就是为什么我想多次重用生成器。 y = FunctionWithYield() for x in y: print(x) #here must be something to reset 'y' for x in y: print(x) 当然,我会考虑将内容复制到简单列表中。有没有办法重置我的发电机?
153 python  generator  yield 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.