通过列表生成式,我们可以直接创建一个列表,但是收到内存限制,列表容量是有限的。而且创建一个包含100万个元素的列表未免太占用空间了,如果我们只需要访问前面的几个元素,那多出来的空间就被白白浪费掉了。所以如何只生成前几个元素呢?
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]
改成()
,就创建了一个generator: