Python中期学者必看之生成器表达式和enumerate
前言:当输入的数据量大于某些数值之后,列表的内存占用大小变得不可忽视,解决方法就是利用生成器表达式描述列表,避免内存占用过高,类似于最简单的for表达式 .
当输入数据较少时候,必须要用到列表推导,但是如果内存消耗较大,容易导致程序崩溃.通过无休止的循环字符进行操作,久而久之,列表推导也会出现问题,python为此提供了生成器表达式,在每一次运行中生成一项数据.
上例中演示了如何读取一份文件并且返回每行字符数,采用生成器表达式,由于是每一次临时生成,所以不用担心内存迅速增加占用的问题 .
生成器表达式也同样能一起使用,甚至嵌套使用:
上述的语法是没有错误的 .
使用enumerate代替range :
核心要点:
(1)enumerate函数提供了一种精简的写法,可以在遍历迭代器时获知每个元素的索引。
(2)尽量用enumerate来改写那种将range与下标访问相结合的序列遍历代码。
(3)可以给enumerate提供第二参数,以指定开始计数时所用的值(默认为0)
range在使用中大部分用于创建一系列整数的迭代:
我们访问其中元素必须获得其长度以及下标,似乎不便于理解 .
python提供了内建函数:enumerate函数解决这个难题 .
enumerate可使用各个迭代器作为生成器,产出相关值 .
编于2018.2.21
欢迎大家交流,一起进步 !
每天不断的干货 , 助你成长 .
编辑于 20:54
领取专属 10元无门槛券
私享最新 技术干货