一个lambda 表达式的学习
1 >>> li=[lambda :x for x in range(10)] 2 >>> res=li[0]() 3 >>> print res 4 9
这里的第一个x处在嵌套作用域中,对于函数,或者lambda表达式,在列表里面存储的都是执行代码。
所以x循环之后,最后的值是9.然后调用lambda,当然输出是9啦。
改进
li=[(lambda x:(lambda :x)(x)for x in range(10))]
说一下,第一个x,可以看成函数参数,传给第二个嵌套作用域里的x,第三个x是调用这个(lambda x:(lambda :x)()函数,返回lambda:x
你也可以这么写
li = [lambda x=x: x for x in range(9)]
这里的x是保证调用lambda时可以不用传参数。

浙公网安备 33010602011771号