特性
节省内存。不需要像list一样一下子存储很多需要的数据,如果数据可以通过某种规则生成,则可以通过python的生成器来生成数据,在需要数据时直接调用即可。
用法
list在创建时使用‘[]’,而创建生成器时使用‘()’,如创建生成器g,需要数据时使用next()获得下一个数据:
注意:当生成器中无更多元素时,会抛出StopIteration错误。
有时将函数中的print函数改为yield,可以将函数变为生成器,如打印斐波那契数列时,通常我们这样写:
要将其转换成生成器,只要将print语句改成yield,如:
调用生成器时,函数就会执行到yield语句,在下一次调用时,会从yield语句的下一句开始执行,直到下一个yield语句。
生成器是可迭代对象,所以可以用在for循环中,如: