擅长:python、mysql、java
<p><code>row[0] for row in data</code>给出一个生成器对象。这就像懒惰的评估。这意味着执行这个for循环并不是为了产生结果,而是创建了一个generator对象,该对象可用于在需要时一次执行for循环。<br/>
这样做是为了在时间和记忆方面提高效率。你知道吗</p>
<p>当它括在括号中时,<code>sitelist = (row[0] for row in data)</code>被视为in expression,生成的生成器对象被存储(引用)在<code>sitelist</code>。你知道吗</p>
<p>当它被括在方括号中时,<code>sitelist = [row[0] for row in data]</code>它是一个列表。for循环立即被执行,一个列表被构造并存储(引用)在<code>sitelist</code>。你知道吗</p>
<p>有关python中迭代协议的更多信息,请参阅<a href="https://stackoverflow.com/a/9884259">this answer</a>。<br/>
然后探索python中的生成器。有许多文章/博客文章对生成器进行了不同程度的详细解释。你知道吗</p>