擅长:python、mysql、java
<p>您正在传递一个<a href="http://docs.python.org/2/reference/expressions.html#generator-expressions">generator expression</a>。在</p>
<p>一个<a href="http://docs.python.org/2/reference/expressions.html#list-displays">list comprehension is specified with square brackets</a>(<code>[...]</code>)。列表理解首先构建一个<em>列表对象</em>,因此它使用与list-literal语法密切相关的语法:</p>
<pre><code>list_literal = [1, 2, 3]
list_comprehension = [i for i in range(4) if i > 0]
</code></pre>
<p>另一方面,生成器表达式创建迭代器对象。只有在迭代<em>到</em>时,该对象才是执行的包含循环并生成项。生成器表达式不会<em>保留</em>这些项;没有生成列表对象。在</p>
<p>生成器表达式总是使用<code>(...)</code>循环parethesis,但是当用作调用的<em>only</em>参数时,可以省略括号;以下两个表达式是等效的:</p>
^{pr2}$
<p>引用生成器表达式文档:</p>
<blockquote>
<p>The parentheses can be omitted on calls with only one argument. See section <a href="http://docs.python.org/2/reference/expressions.html#calls"><em>Calls</em></a> for the detail.</p>
</blockquote>