python列表生成器

python列表生成器,里面可以使用函数,和判断条件

# -*- coding: utf-8 -*-

L1 = ['Hello', 'World', 18, 'Apple', None]


如果想生成 L2=['hello', 'world', 'apple']则非常简单

L2=[x.lower() for x in L2 if isinstance(x,str)]


L3=[1,2,3,4,5]

L3=[x * x for x in L3 if x%2==1]

>>>L3

>>>[1, 9, 25]


如果: L4=(x.lower() for x in L2 if isinstance(x,str))


中括号换成小括号,L4则为生成器



所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

python 中可以通过,a,b=b,a+b 这种起卦的赋值,即:a=b,b=a+b



generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。


请先 登录 后评论
  • 0 关注
  • 0 收藏,505 浏览
  • 石天 提出于 2016-11-24 07:12

相似问题