首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python教程(16)——lambda表达式详解

lambda函数介绍

我们平时经常可以在Python的代码中看到一种lambda开头的这种表达式,如果没有学过Python的相关知识,可能会一脸懵逼,不清楚到底这个关键字是干嘛的,用来表示什么。

实际上这个就是lambda函数。

lambda函数是Python中一种特殊的匿名函数,但不仅仅只存在Python中,它允许我们快速定义简单的函数,而不需要使用def关键字来定义一个正式的函数。它通常用于简化代码,使得函数定义更加简洁。

lambda函数语法

lambda函数的一般语法如下:

lambda 参数列表: 表达式

其中,lambda是Python中定义lanbda函数的关键字,绝对不可以忽略,它用来标识该语句是个lambda函数。参数列表是一个或多个输入参数,使用逗号分隔。表达式是函数的计算逻辑,对参数进行各种操作,并返回最终结果。

一个lambda函数可以有0个或多个参数,参数间使用逗号隔开

参数列表和表达式用冒号隔开

上述所有代码必须在一行的一个语句中完成

下面是lambda函数的语法示例:

无参数的lambda函数:

no_arg = lambda: "Hello, world!"

print(no_arg()) # 输出结果为"Hello, world!"

单个参数的lambda函数:

square lambda x: x**2

print(square(3)) # 输出结果为9

多个参数的lambda函数:

add = lambda x, y: x + y

print(add(3, 4)) # 输出结果为7

需要注意的是,lambda函数常用于简单的函数定义,不适用于复杂的逻辑或多行语句。如果需要执行复杂逻辑,建议使用普通的函数定义方式此外,lambda函数常用于与高阶函数(如map()、filter()、reduce()等)结合使用,用于快速定义回调函数或简化代码。

总结来说,lambda函数是一种快速定义匿名函数的方式,通过简洁的语法实现了函数的快速定义和使用,适用于简单的函数逻辑和作为高阶函数的参数。

lambda函数特性

lambda函数与普通的函数相比,确实有它自己一些独特的特性。

匿名性

lambda函数是匿名函数,即没有函数名。它们通常用于一次性的操作,不需要显式定义一个函数名称。

greeting = lambda: "Hello, world!"

print(greeting()) # 输出结果为 "Hello, world!"

简洁性

lambda函数采用简洁的语法,可以在一行代码中定义函数。它们常常用于简化代码,减少不必要的函数定义。

add_two_nums = lambda x, y: x + y

print(add_two_nums(3, 4)) # 输出结果为 7

在高阶函数中的应用

lambda函数常用于与高阶函数(如map()、filter()、reduce()等)结合使用,可以快速定义回调函数或对序列元素进行处理。lambda表达式可以提供一种简洁的方法来定义函数。下面是lambda表达式在几个高阶函数中的应用示例:

map(function, iterable)

使用lambda表达式将一个函数应用于可迭代对象中的每个元素,并返回一个由结果组成的新可迭代对象。

numbers = [1, 2, 3, 4, 5]

squared_numbers = map(lambda x: x**2, numbers)

print(list(squared_numbers)) # 输出:[1, 4, 9, 16, 25]

filter(function, iterable)

使用lambda表达式根据条件筛选出可迭代对象中的元素,并返回一个由符合条件的元素组成的新可迭代对象。

numbers = [1, 2, 3, 4, 5]

even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers)) # 输出:[2, 4]

sorted(iterable, key=function)

使用lambda表达式作为关键字函数,根据指定的函数返回值对可迭代对象进行排序,并返回排序后的列表。

students = [

{"name": "Alice", "age": 20},

{"name": "Bob", "age": 18},

{"name": "Charlie", "age": 22}

]

sorted_students = sorted(students, key=lambda x: x["age"])

print(sorted_students) # 输出:[{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}]

reduce(function, iterable[, initializer])

使用lambda表达式对可迭代对象中的元素进行累计计算,按照指定的规则将前两个元素的结果与下一个元素进行计算,最终返回一个单一的结果。

from functools import reduce

numbers = [1, 2, 3, 4, 5]

sum = reduce(lambda x, y: x + y, numbers)

print(sum) # 输出:15

lambda表达式在高阶函数中提供了一种简洁的方式来定义匿名函数,使代码更精练和易读,我们可以根据需要使用lambda表达式来定义适合特场景的函数。

总体而言,lambda函数是一种方便、简洁的函数定义方式,适用于一些简单的计算逻辑和快速的回调函数定义。它们提供了一种简化代码、提高代码可读性的方法。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O5HwWPZ71LI-A_S8WObJs2uw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券