擅长:python、mysql、java
<p>一个相当实用的方法是在创建时告诉“生成器的生成器”是生成生成器还是生成列表。虽然这不如让<code>list</code>神奇地知道该怎么做那么方便,但它似乎仍然比拥有一个特殊的<code>to_list</code>函数更舒适。</p>
<pre><code>def gengen(n, listmode=False):
for i in range(n):
def gen():
for k in range(i+1):
yield k
yield list(gen()) if listmode else gen()
</code></pre>
<p>根据<code>listmode</code>参数,这可以用于生成生成器或列表。</p>
<pre><code>for gg in gengen(5, False):
print gg, list(gg)
print list(gengen(5, True))
</code></pre>