您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何理解Python中的生成器?

2022/7/7 6:45:19发布70次查看
生成器可以理解为用于生成列表、元组等可迭代对象的机器。既然是机器,没启动之前,在python中只是一个符号。也就是说,生成器还不是实际意义上的列表,因此比列表更加节省内存空间,必要时,生成器可以按照你的需要去生成列表。下面是一个简单的生成器:
一个简单的生成器,还不是列表g就是一个生成器,用于生成一个数的平方的列表,目前只是定义了一个生成器,并没有启动它,因此看不到实际存在的列表。需要注意列表解析和生成器的区别。列表解析是实实在在的列表,请参考我的文章《如何提升python编程性能,你那些坏习惯是不是都在这里?》。
只需要把列表解析中的大括号“[ ]”改为小括号“( )”,列表解析就变为生成器。下面是列表解析的例子。
列表解析,实际上的列表那么生成器如何生成列表、元组等?
继续上述定义的生成器g。看如何按照我们需求生成列表。使用内置方法next()来启动生成器,可以生成我们需要长度的列表。
生成长度为5的列表由于生成器g的能力最多生成长度为10的列表,下面的代码出现错误。
内置方法next()可使得我们可以接着之前生成的列表继续生成另外一个列表。例如:
承接前面列表生成列表如何定义可以生成任意长度的生成器?
上节方法定义的生成器的能力有限,生成列表的长度有限。通过yield方法可以定义无限能力的生成器,可以生成任意长度的列表。和函数的定义类似,把return语句改为yield语句。下面定义一个生成器。
本生成器也是生成一个数的平方的列表,但是它的能力无限。生成列表的方法和上节一样,使用next()方法。
生成长度为15的列表总结
生成器就是一个机器,没启动它,它就是一个符号,占用很少的内存空间,有点像汽车,启动它,才能走,但生成器只能向前走,不能后退,你可以停一下,再次启动它,又可以接着走。
生成器在机器学习中特别有用,可以用来处理大数据,其中的缘由读者可以思考一下。一般在线学习算法、外存学习算法都需要生成器。
(作者:百家号/aimath)
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product