匿名函数lambda小计

时间:2021-06-12 19:13:46

当我们想要实现一个逻辑处理,一般会考虑使用函数来实现。但是python既然是“化繁为简”,那么它当然提供了对应的方法——匿名函数lambda,能够实现简单逻辑处理的表达式

简单介绍下它的作用:

lambda 参数:表达式

举个例子:当我们想要实现a+b计算时,我们一般会封装一个方法去实现

def f(x,y):
return x +y
print(f(2,3)) #结果为:5

当然,我们也可以使用lambda来使代码更简洁:

f=lambda x,y:x+y
print(f(2,3)) # 结果为:5

再结合之前随笔中提到的函数式编程中的filter、map、reduce,就能够使一些稍微复杂的代码,用一个表达式就能够处理。例如:

a ={'a_c':12,'b.c':'ac'}

想要得到:['ac', 'bc'] 即返回字典的key值,并去掉字典key中的_和.符号

拆解需求:

1、返回key

2、去掉key中的_和.符号

分析:

1、直接a.keys()key获得key

2、通过re正则模块配合split实现除去_和.

接下来就是处理:

print(list(a.keys()))  #结果为:['a_c', 'b.c']
print(list(map(lambda x:re.split('_|\.',x),a.keys())))  #结果为:[['a', 'c'], ['b', 'c']]

时间有限,贴一下最终的表达式:

print(list(map(lambda x:reduce(lambda m,n:m+n,x),list(map(lambda x:re.split('_|\.',x),a.keys())))))
print(list(map(lambda x:reduce(lambda m,n:m+n,re.split('_|\.',x)),a.keys())))