我是新的python程序员,到目前为止我所理解的,"yield"关键字返回一个对象来代替生成器函数只返回生成器对象.
因此,如果我有一个包含10K项目的列表,那么我如何制作智能的pythonic解决方案,而无需在列表中附加值并使其变大.
这意味着,我将一些值附加到列表中,最后创建一个大型列表,如下所示:
def example():
final_list = []
for i in range(0,10000):
final_list.append(i)
return final_list
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,而不是一个真正的问题,我使用范围()只产生循环闲来无事,在我真正的问题,有没有顺序的数据,这将是随机字符串,以及findla列表将包含10K的字符串.那么如何才能获得所有值而无需以高效的pythonic方式附加到列表中.
谢谢.
你的例子已经过简化了,所以让我们假装你想要10000个随机数.
有两种方法可以创建生成器.一个是yield声明:
def example():
for i in xrange(10000):
yield random.random()
Run Code Online (Sandbox Code Playgroud)
另一种方式是使用生成器表达式:
(random.random() for i in xrange(10000))
Run Code Online (Sandbox Code Playgroud)
您选择哪一个取决于您的代码复杂性.