Python扩展知识详解:lambda函数

目录

前言

[1 基本知识点](#1 基本知识点)

语法

特点

代码示例

[2 常见使用场景](#2 常见使用场景)

[1. 与高阶函数配合使用](#1. 与高阶函数配合使用)

[2. 作为排序键来使用](#2. 作为排序键来使用)

[3. 立即调用函数](#3. 立即调用函数)

[4. 在字典中使用](#4. 在字典中使用)

[3 高级用法(进阶版)](#3 高级用法(进阶版))

[1. 多参数lambda](#1. 多参数lambda)

[2. 设置默认参数](#2. 设置默认参数)

[3. 嵌套lambda](#3. 嵌套lambda)

注意事项

何时使用lambda

何时避免使用lambda

小结


前言

Lambda函数是Python中的一种匿名函数,本质上还是一个函数 ,它可以用一行代码定义一个简单的函数,而不需要使用def关键字。

1 基本知识点

语法

python 复制代码
lambda arguments: expression
  • lambda:定义lambda函数的关键字

  • arguments:函数的参数,可以有多个,参数之间用逗号分隔

  • expression:函数的返回值表达式,只能有一个表达式

特点

  1. **匿名函数:**没有函数名

  2. 自动返回返回值: 不需要用return语句,会自动返回表达式的结果

  3. **简洁:**通常用于简单操作,可以替代小型函数

  4. **单行表达式:**只能包含一个表达式,不能包含复杂的逻辑或多条语句

  5. 可以作为参数传递: 常用于高阶函数,如**map(), filter(), reduce()**等

代码示例

python 复制代码
# 普通函数定义
def add(x, y):
    return x + y

# 等效的lambda函数
add_lambda = lambda x, y: x + y

# 测试
print(add(3, 5))        # 输出: 8
print(add_lambda(3, 5))  # 输出: 8

2 常见使用场景

1. 与高阶函数配合使用

python 复制代码
# 使用map()和lambda将列表中的每个元素平方
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

# 使用filter()和lambda筛选偶数
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出: [2, 4]

map()和filter()内置函数的使用方法见其他文章(pass:作者暂未发布,后续会发布详解)

2. 作为排序键来使用

python 复制代码
# 按元组的第二个元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # 输出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

# 按字符串长度排序
fruits = ['apple', 'banana', 'cherry', 'date']
fruits_sorted = sorted(fruits, key=lambda x: len(x))
print(fruits_sorted)  # 输出: ['date', 'apple', 'banana', 'cherry']

3. 立即调用函数

python 复制代码
# 定义并立即调用lambda函数
result = (lambda x, y: x * y)(5, 3)
print(result)  # 输出: 15

4. 在字典中使用

python 复制代码
# 使用lambda作为字典值实现简单计算器
operations = {
    'add': lambda x, y: x + y,
    'subtract': lambda x, y: x - y,
    'multiply': lambda x, y: x * y,
    'divide': lambda x, y: x / y
}

print(operations['add'](10, 5))       # 输出: 15
print(operations['multiply'](10, 5))  # 输出: 50

**说明:**字典的值可以是任意类型,包括函数。


3 高级用法(进阶版)

1. 多参数lambda

python 复制代码
# 多个参数的lambda函数
full_name = lambda first, last: f"{first} {last}"
print(full_name('John', 'Doe'))  # 输出: John Doe

2. 设置默认参数

python 复制代码
# 带默认参数的lambda
greet = lambda name, greeting='Hello': f"{greeting}, {name}!"
print(greet('Alice'))          # 输出: Hello, Alice!
print(greet('Bob', 'Hi'))      # 输出: Hi, Bob!

3. 嵌套lambda

python 复制代码
# 嵌套lambda函数
multiplier = lambda x: (lambda y: x * y)
times3 = multiplier(3)
print(times3(5))  # 输出: 15

注意事项

  1. 可读性:过度使用lambda会降低代码可读性,复杂的逻辑应该使用普通函数

  2. 调试:lambda函数没有函数名,调试时可能更难追踪

  3. 限制:lambda只能包含一个表达式,不能包含语句或注解

何时使用lambda

  • 函数逻辑非常简单

  • 函数只在一个地方使用

  • 作为参数传递给高阶函数

  • 需要短小的回调函数

何时避免使用lambda

  • 函数逻辑复杂

  • 函数需要重用

  • 需要文档字符串或类型注解

  • 函数需要多个语句


小结

Lambda函数是Python中一个强大的工具,特别适合与高阶函数配合使用或需要短小匿名函数的场景。虽然它简洁高效,但应该适度使用以保持代码的可读性和可维护性。

如果您觉得本文章对您有帮助,别忘了点赞、收藏加关注,更多干货内容将持续发布,您的支持就是作者更新最大的动力。本专栏将持续更新,有任何问题都可以在评论区讨论

相关推荐
q_q王几秒前
本地知识库工具FASTGPT的安装与搭建
python·大模型·llm·知识库·fastgpt
lanboAI1 分钟前
基于卷积神经网络的蔬菜水果识别系统,resnet50,mobilenet模型【pytorch框架+python源码】
pytorch·python·cnn
GSDjisidi1 分钟前
日本IT行业|salesforce开发语言占据的地位
开发语言·职场和发展
一刀到底2118 分钟前
ai agent(智能体)开发 python3基础8 网页抓取中 selenium 和 Playwright 区别和联系
人工智能·python
剑哥在胡说16 分钟前
Python三大Web框架对比:Django、Flask、Tornado的异步实现方式详解
数据库·python·django·flask·tornado
da-peng-song34 分钟前
ArcGIS arcpy代码工具——根据属性结构表创建shape图层
javascript·python·arcgis
martian6651 小时前
从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
开发语言·科技·系统架构·系统安全·创业创新
滚雪球~1 小时前
小市值策略复现(A股选股框架回测系统)
python·量化·策略
南玖yy1 小时前
C++ 成员变量缺省值:引用、const 与自定义类型的初始化规则详解,引用类型和const类型的成员变量自定义类型成员是否可以用缺省值?
c语言·开发语言·c++·后端·架构·c++基础语法
大G哥1 小时前
Java 中的 Integer 缓存池:背后的性能优化机制解析
java·开发语言·缓存·性能优化