匿名函数
1、基础
lambda是匿名函数,为了解决那些功能很简单的需求而设计的一句话函数。
lambda的语法非常简单:
下面是一个lambda表达式的简单例子:
# 普通函数实现: def calc(n): return n**n print(calc(10)) # lambda函数实现: calc = lambda n:n**n # n:参数; 表达式:n**n 【表达式结果作为返回值】 print(calc(10))
lambda表达式和定义一个普通函数的对比:
注意:
使用lambda表达式并不能提高代码的运行效率,它只能让你的代码看起来简洁一些。
2、面试题
### 面试题1: d = lambda p:p*2 t = lambda p:p*3 x = 2 x = d(x) x = t(x) x = d(x) print(x)
### 面试题2: # 现有两元组(('a'),('b')),(('c'),('d')),请用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] ret = zip((('a'),('b')),(('c'),('d'))) res = map(lambda tup:{tup[0]:tup[1]},ret) for i in res: print(i)
# 面试题3: # 以下代码的输出是什么? def multipliers(): return [lambda x:i*x for i in range(4)] # i = 0,1,2,3 print([m(2) for m in multipliers()]) # x = 2,调用最后一个i=3