Python Lambda 用法大全

发布时间:2024年01月12日

一、Lambda表达式基础

Lambda 的组成分为三部分

lambda arguments: expression

arguments为Lambda表达式的参数列表,多个参数使用逗号分隔;expression则是Lambda表达式的返回值表达式。

Lambda表达式的基本用法:

(lambda x, y: x + y)(1, 2)  # 输出3
(lambda x: x * x)(3)  # 输出9
(lambda x: (x % 2 == 0))(4)  # 输出True
(lambda x: (x % 2 == 0))(3)  # 输出False

二、Lambda表达式应用场景

1. 函数作为参数

Lambda表达式可以作为函数的参数传递

result = map(lambda x: x * x, [1, 2, 3, 4, 5])
print(list(result))  # 输出[1, 4, 9, 16, 25]

2. 条件筛选

filter函数接收一个Lambda表达式和一个序列,它会返回序列中所有偶数组成的新序列。

result = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])
print(list(result))  # 输出[2, 4]

3. 函数式编程

Lambda表达式可以作为函数的返回值,用于构造更为复杂的计算过程

def add_function(n):
    return lambda x: x + n
 
add_3 = add_function(3)
print(add_3(4))  # 输出7

三、Lambda表达式和map、filter、reduce的结合

1. Lambda表达式和map的结合

map函数和Lambda表达式常常一起使用,可以对序列中的每个元素应用Lambda表达式,并返回结果序列。

result = map(lambda x: x * x, [1, 2, 3, 4, 5])
print(list(result))  # 输出[1, 4, 9, 16, 25]

2. Lambda表达式和filter的结合

filter函数和Lambda表达式组合使用可以实现对序列中符合特定条件的元素进行筛选。

result = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])
print(list(result))  # 输出[2, 4]

3. Lambda表达式和reduce的结合

reduce函数可以对序列中的元素依次累加,Lambda表达式可以定义累加过程。

from functools import reduce
 
result = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(result)  # 输出15

四、Lambda表达式在Python中的高级用法

1. 列表排序

列表的sort方法可以接收一个key参数,用于定义列表排序的规则。Lambda表达式可以作为参数传递给key,定义更复杂的列表排序规则。

fruits = ["apple", "orange", "banana", "lemon"]
fruits.sort(key=lambda x: len(x))
print(fruits)  # 输出['apple', 'lemon', 'banana', 'orange']

2. 列表切片

Lambda表达式可以用来指定切片的起始位置和结束位置。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = nums[lambda x: 2:lambda x: 5]
print(result)  # 输出[3, 4, 5]

3. 字典排序

在Python中,可以使用sorted函数对字典进行排序。Lambda表达式可以指定排序规则。

data = {"apple": 5, "orange": 3, "banana": 8, "lemon": 1}
sorted_data = sorted(data.items(), key=lambda x: x[1])
print(sorted_data)  # 输出[('lemon', 1), ('orange', 3), ('apple', 5), ('banana', 8)]
文章来源:https://blog.csdn.net/xdpcxq/article/details/135553252
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。