python 之lambda表达式

2019-08-08  本文已影响0人  不分享的知识毫无意义

  lambda表达式算是python一种比较方便的语法了,主要作用是代替简单的函数,免去了编写函数的烦恼,语法也更加地简洁。下面就简单介绍一下lambda的使用场景。从本质上来讲,lambda是一个函数,可以接受参数输入。

funca = lambda x: x+1 
funca(2)
out:3
funcb = lambda x:x+1 if x==1 else 0
funcb(1) 
out:2
funcb(2)
out:0
funcc = [lambda x: x+j for j in range(5)]
[f(1) for f in funcc]
out:[5, 5, 5, 5, 5]

  但是从上面的输出来看,又让人非常困惑,为什么全都是5,而不是[1,2,3,4,5]。这里需要解释的是:这个循环控制了输出五个lambda函数,但是每个函数都是执行到循环的最后一步,也就是说x+j实际上和x+4是等价的,每个函数都一样。

funcd = lambda: lambda x: x + 5
funcdd = funcd()
funcdd(3)
out:8

  看完你应该也觉得没有任何意义吧。

list1 = list(map(lambda x: x**2,[1,2,3,4]))
out: [1, 4, 9, 16]
list2 = list(filter(lambda x:x<=4,[2,3,4,5]))
out:[2, 3, 4]
#先生成一个5行一列的dataframe
pd_1 = pd.DataFrame([round(np.random.random(),2) for _ in range(5)])
#数据长这样
      0
0  0.95
1  0.62
2  0.04
3  0.61
4  0.77
#接下来转换
pd_2 = pd_1[0].apply(lambda x: '{:.0%}'.format(x))
out:
0    95%
1    62%
2     4%
3    61%
4    77%
上一篇 下一篇

猜你喜欢

热点阅读