擅长:python、mysql、java
<p>除非我从根本上误解了Python生成器的工作方式,否则这是不可能的,您应该返回create方法,而不是生成一个生成器。你知道吗</p>
<pre><code>def create(n):
items = ["a", "b", "c"]
return [items[random.randint(0,2)] for i in range(n)]
</code></pre>
<p>上面的列表理解将创建一个列表,而不是使用生成器。为了更好地理解生成器,我建议通读<a href="https://stackoverflow.com/questions/1756096/understanding-generators-in-python">this excellent post</a>。你知道吗</p>
<p>编辑:出于好奇,我对Tomothy32建议的list(create(n))方法进行了计时,该方法返回一个list。正如预期的那样,返回生成器然后通过理解存储列表要慢一些(平均130微秒对125微秒)。但是,您可能更喜欢保持原始方法不变,并且可以使用简单的选项将特定的生成器调用保存为列表,而不是重新定义它并始终返回列表对象。你知道吗</p>