先举一个普通的 Python 例子:将一个 list 里的每个元素都平方:
这个写法要好过
map( lambda x: x*x, [y for y in range(10)] )
def sq(x):
return x * x
map(sq, [y for y in range(10)])
进一步讲,匿名函数本质上就是一个函数,它所抽象出来的东西是一组运算。这是什么意思呢?类比
和
,你会发现,等号右边的东西完全可以脱离等号左边的东西而存在,等号左边的
名字只是右边之
实体的标识符。如果你能习惯 [1, 2, 3] 单独存在,那么 lambda x : x + 1 也能单独存在其实也就不难理解了,它的意义就是给「某个数加一」这一运算本身。
现在回头来看 map() 函数,它可以将一个函数映射到一个可枚举类型上面。沿用上面给出的 a 和 f,可以写:
也就是将函数 f 依次套用在 a 的每一个元素上面,获得结果 [2, 3, 4]。现在用 lambda 表达式来替换 f,就变成:
a = [1, 2, 3]
f = lambda x : x + 1
现在回头来看 map() 函数,它可以将一个函数映射到一个可枚举类型上面。沿用上面给出的 a 和 f,可以写:
map(f, a)
map( lambda x : x + 1, [1, 2, 3] )
作者:涛吴
链接:http://www.zhihu.com/question/20125256/answer/14058285
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。