Python ::使用Python生成器
生成器函数使您可以声明行为类似于迭代器的函数。它们允许程序员以快速,轻松和干净的方式制作迭代器。让我们以一个例子来解释这个概念。
假设您已找到以1开头的前100000000个完美平方的总和。
看起来很简单吧?使用列表推导可以很容易地做到这一点,但是问题是输入量很大。作为示例,让我们看一下下面的代码:
t1 = time.clock() sum([i * i for i in range(1, 100000000)]) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method")
在增加我们需要求和的理想数时,我们意识到该方法由于更高的计算时间而不可行。这是Python生成器进行救援的地方。用括号替换括号时,我们将列表理解更改为生成器表达式。现在,我们来计算花费的时间:
t1 = time.clock() sum((i * i for i in range(1, 100000000))) t2 = time.clock() time_diff = t2 - t1 print(f"It took {time_diff} Secs to execute this method")
如我们所见,所花费的时间已大大减少。对于较大的输入,此效果将更加明显。