lambda函数的由来
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的「λ演算」得名,直接对应于其中的lambda抽象(lambda abstraction)。
λ这个符号读lambda,所以匿名函数又被称为lambda函数,最早lambda函数应该是出现Lisp中的,因为它是一门「纯函数式编程的语言」。
❝
λ演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义、函数如何被应用以及递归的形式系统。
有兴趣的小伙伴可以深入学习下,据说它的作用比算法还大。
❞
讲完lambda函数的由来,随便带大家学习下lambda函数的使用。
lambda函数普通用法
无参数形式
f1 = lambda: "f1"
等价于普通函数:
def f1():
return "f1"
有参数形式
f2 = lambda x,y,z: print(x,y,z)
等价于普通函数:
def f2(x,y,z):
print(x,y,z)
有分支条件形式
f3 = lambda x: print("偶数") if x % 2 == 0 else print("奇数")
等价于普通函数:
def f3(x):
if x % 2 == 0:
print("偶数")
else:
print("奇数")
lambda函数配合高阶函数使用
如果你还不知道什么是Python高阶函数的话可以看下面这篇公众号。
Python高阶函数一点都不“高阶”【#124】
配合map函数计算两数平方和
s = lambda x,y : x**2 + y**2
array1 = [1,3,5,7,9]
array2 = [2,4,6,8,10]
print(list(map(s, array1, array2)))
配合filter函数筛选从数组中筛选偶数
array3 = [1,2,3,4,5,6,7,8,9,10]
even = lambda x: x if x % 2 == 0 else None
print(list(filter(even, array3)))
配合reduce函数实现数组中的数俩俩相乘
from functools import reduce
array4 = [1,2,3,4,5,6,7,8,9,10]
m = lambda x, y: x * y
print(reduce(m, array4))
lambda函数的使用建议
- lambda是函数式编程的利器;
- lambda函数与普通函数相比,不会提高程序运行效率的提高;
- 不建议在lambda函数内写太复杂的条件语句,不易读;
- 如果要使用循环,老老实实用def去定义函数。