当前位置: 首页 > 常识 >

lambda是什么意思(匿名函数为什么叫lambda?)

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去定义函数。