Python入门系列15-lambda表达式
  19qMgiCiiRfc 2023年11月02日 66 0

一、简介

有时候在使用函数的时候不需要给函数分配一个名称,该函数就是匿名函数。在Python中使用lambda表达式表示匿名函数。

语法:

lambda 参数列表: lambda体

lambda是关键字声明,在lambda表达式中,参数列表相当于函数的参数列表,不需要小括号括起来。冒号后面是lambda体,类似于函数体。

提示:lambda体不能是一个代码块,不能包含多条语句,只能包含一条语句,该语句会返回结果给lambda表达式,与函数不同的是不需要return返回。

二、lambda表达式和def函数的区别

1.lambda可以立刻传递,自动返回结果。

2.lambda在内部只能包含一行代码。

3.lambda是一个为编写简单的函数设计的,而def函数用来处理更大的任务。

4.lambda可以定义一个匿名函数,而def函数必须有一个名字。

三、简单案例

无参数lambda:

# 普通def函数
def show():
    return 'hello'


print(show())

# lambda表达式
show_lambda = lambda: 'hello'

print(show_lambda())

输出:

hello
hello

带参数lambda:

# 普通def函数
def add(x, y):
    return x + y


print(add(3, 4))

# lambda表达式
add_lambda = lambda x, y: x + y
print(add_lambda(3, 4))

输出:

7
7

四、map方法使用

遍历序列,对序列中的每个元素进行操作,最终获得新的序列。

# 普通def函数
def add(a):
    return a ** 2


x = map(add, [1, 2, 3, 4, 5])
print(list(x))

# lambda表达式
y = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(y))

输出:

[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]

map函数的第一个参数是一个lambda表达式,第二个就是需要作用的对象,返回是一个map对象,需要手动转换类型。

五、filter方法使用

对序列中的元素进行筛选,最终获得符合条件的序列。

# 普通def函数

def check(num):
    if num % 2 == 0:
        return num


filter_list = filter(check, [1, 2, 3, 4, 5])
print(list(filter_list))

# lambda表达式

lambda_list = filter(lambda num: num % 2 == 0, [1, 2, 3, 4, 5])
print(list(lambda_list))

输出:

[2, 4]
[2, 4]

六、reduce方法使用

对序列所有元素进行累计操作。

from functools import reduce


# 普通def函数
def sum(x, y):
    return x + y


sum1 = reduce(sum, [1, 2, 3, 4, 5])
print(sum1)

# lambda表达式

lambda_sum = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(lambda_sum)

输出:

15
15

七、总结

1.lambda只是一个表达式,不是代码块,只包含一行代码。

2.对于复杂函数最好不要使用lambda表达式,会增加代码阅读难度。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
19qMgiCiiRfc