Statement

Lambda

简介

Lambda是构建匿名函数的工具,一般用于构建简单的只执行一次的函数对象。经常会和filter(), map(), reduce()等一起使用,如下:

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> 
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>> 
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>> 
>>> print reduce(lambda x, y: x + y, foo)
139

构建Lambda函数需要一条表达式,如上所示的x % 3 ==0,简单说表达式就是有返回值的,但有返回值这个概念有时并不是那么明显,如下:

    init_history = lambda: {'loss': [], 'jaccard': [], 'accuracy': []}

这是我在看FC-DenseNet代码时看到的一条语句。这里的{'loss': [], 'jaccard': [], 'accuracy': []}就是一条我个人觉得返回值不是很显然的表达式。一个判断是否为表达式的方法就是想象该条语句执行后是否可以将其结果赋值给一个变量,如果可以则是表达式,这么看来的话,上面的这条语句就显然是表达式了,其返回结果就是自身。赋值语句就不是表达式,他不返回任何东西,甚至不返回None,也许你会说有这种写法:

In [1]: x = y = 3

In [2]: x
Out[2]: 3

这只说明Python支持链式赋值,并不是说这里将y = 3赋给了x,事实上x, y都被赋予了3,并且要是写成x = (y = 3)的话会报错的。总之对语句和表达式还不清楚的话,不如这么想,能写成Lambda函数的就是表达式。

results matching ""

    No results matching ""