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循环随之结束。