Python中针对lazy for-comprehensions的文档

3

看起来Python中的这个结构不是惰性的:

g1 = ["'"+x+"'" for x in f2]

这是关于IT技术的翻译内容:

g2 = ("'"+x+"'" for x in f2)

因为g2有一个next()方法而g1没有。

这在哪里有说明文档?我似乎找不到相关的Python文档页面,也不知道应该查找什么内容。


6
第一个被称为列表推导式,第二个被称为生成器表达式,我希望这可以帮助您进行搜索。 - Ashwini Chaudhary
http://docs.python.org/2/reference/expressions.html#generator-expressions - Ismail Badawi
拥有next()方法并不是惰性求值的决定性测试。考虑iter(range(1000)),返回的迭代器具有next()方法,但该对象仍然是一个完整的列表,在返回之前已经被求值和分配了内存(至少在Py 2.X中如此;Py 3k+则不同)。 - dawg
2个回答

6
你正在寻找列表显示生成器表达式。第一种形式被称为“列表推导式”,是定义列表的专用形式。
至于第二种形式,生成器表达式,文档中有这样的解释:

生成器表达式会产生一个新的生成器对象。它的语法与推导式相同,只是括号不同于方括号或花括号。


谢谢!我喜欢依赖于文档记录的行为,而不是我认为正确的行为。 - Jason S

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接