Python学习--Lambda使用

这两天学习Python一些应用教程的时候,看到这种写法:


return series.apply(lambda x:((x - min_val) / scale) - 1.0)

lambda是什么东西?????没见过,于是search online,大致是说lambda是一个匿名函数,用于解决简单函数的命名问题,通俗一点说,比如你在程序中想写这样一个函数

def a(x):
    x = x + 1
    return x
print(a(2))

那么如果你像上面那样写的话是不是觉得太蠢了?哦不,是太多余了,你还得为这个函数起一个名字以便于日后阅读,如果有一种方法不用这样定义函数,而且只用一行就搞定,是不是很爽?这就是Lambda的作用啦,尝试下面的写法:

a = lambda x: x + 1
print(a(2)) 

代码看起来是不是简洁了不少?或许这个例子并不能说明lambda的便利之处,但现在再回过头来看看最上面的那个例子,如果你写了一个函数

def a(x):
    x = (x - min_val) / scale) - 1.0
    return x 

而这个函数在整个程序中仅仅在这里使用了一次,那是不是很多余?而对比最上面的那种写法,lambda的便利指出一目了然。下面具体解释一下,lambda后面的x是作为函数参数,就是我们常说的形参,冒号后面跟函数实体,单独使用lambda函数时只能传入单个参数,也就是只能对一个数进行运算,而运用map()函数也可以将lambda函数应用在列表中:

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
reslut = map(lambda x: x+1, foo )
print(list(reslut))

help(map)的结果如下


制作一个迭代器,使用来自每个迭代器的参数计算函数。 当最短的迭代器耗尽时停止。(google翻译)

map()函数产生一个迭代器,用来迭代列表中的每个元素,将lambda函数应用到每个元素上,list()函数将迭代器的返回值转换成列表输出。


Python入门新手,第一次写博客,欢迎大神指教......................................

猜你喜欢

转载自blog.csdn.net/no_superintendent/article/details/79957681