2024-03-29 05:09:06 发布
网友
我有这个:
>>> sum( i*i for i in xrange(5))
我的问题是,在这种情况下,我是传递一个列表理解还是一个生成器对象来求和?我怎么说?有没有一个通用的规则?在
还要记住sum本身需要一对括号来括住它的参数。我认为上面的括号是用来求和的,而不是用来创建生成器对象的。你同意吗?在
这是一个发电机:
>>> (i*i for i in xrange(5)) <generator object <genexpr> at 0x01A27A08> >>>
列表理解包含在[]中。在
[]
列表理解包含在[]:
>>> [i*i for i in xrange(5)] # list comprehension [0, 1, 4, 9, 16] >>> (i*i for i in xrange(5)) # generator <generator object <genexpr> at 0x2cee40>
你正经过一个发电机。在
您正在传递一个generator expression。在
一个list comprehension is specified with square brackets([...])。列表理解首先构建一个列表对象,因此它使用与list-literal语法密切相关的语法:
[...]
list_literal = [1, 2, 3] list_comprehension = [i for i in range(4) if i > 0]
另一方面,生成器表达式创建迭代器对象。只有在迭代到时,该对象才是执行的包含循环并生成项。生成器表达式不会保留这些项;没有生成列表对象。在
生成器表达式总是使用(...)循环parethesis,但是当用作调用的only参数时,可以省略括号;以下两个表达式是等效的:
(...)
引用生成器表达式文档:
The parentheses can be omitted on calls with only one argument. See section Calls for the detail.
这是一个发电机:
列表理解包含在
[]
中。在列表理解包含在
[]
:你正经过一个发电机。在
您正在传递一个generator expression。在
一个list comprehension is specified with square brackets(
[...]
)。列表理解首先构建一个列表对象,因此它使用与list-literal语法密切相关的语法:另一方面,生成器表达式创建迭代器对象。只有在迭代到时,该对象才是执行的包含循环并生成项。生成器表达式不会保留这些项;没有生成列表对象。在
生成器表达式总是使用
^{pr2}$(...)
循环parethesis,但是当用作调用的only参数时,可以省略括号;以下两个表达式是等效的:引用生成器表达式文档:
相关问题 更多 >
编程相关推荐