Python是一种动态且简洁的编程语言,它提供了多种库和内置函数。在执行相同任务时,Python的Lambda函数因其灵活性和简洁性而脱颖而出,可以在不同场景下以多种方式使用。本文将详细介绍Lambda函数的基本概念、与普通函数的区别、使用场景,以及Python内置的高阶函数和替代方法。
Lambda函数简介
Lambda函数,也称为匿名函数,是一种不接受名称的函数,它直接接受一定数量的参数和一个条件或操作,这些参数和操作通过冒号分隔,并返回最终结果。在大型代码库中执行小型任务或在函数内部执行小型任务时,通常会使用Lambda函数。下面将探讨Lambda函数与普通函数的不同之处。
普通函数与Lambda函数的区别
1) 无名称 -Lambda函数没有名称,而普通函数有适当的名称。
# 普通函数
def check_even_odd(number):
return "Even" if number % 2 == 0 else "Odd"
# Lambda函数
b = lambda x: "Even" if x % 2 == 0 else "Odd"
2) Lambda函数没有返回值 - 普通函数使用def关键字创建并返回值或序列数据类型,而Lambda函数返回的是整个处理过程。
3) 单行函数 - Lambda函数在一行中编写和创建,而在典型的过程中使用缩进。
4) 不用于代码重用 - Lambda函数不能用于代码重用,不能在其他文件中导入这个函数。相比之下,标准函数用于代码重用,可以在外部文件中使用。
为什么使用Lambda函数?
在典型场景中,不单独使用Lambda函数,而是与高阶函数一起使用。高阶函数是需要另一个函数来完成任务的函数,或者当一个函数返回另一个函数时,使用Lambda函数。
什么是高阶函数?
让通过一个例子来理解高阶函数。假设有一组整数列表,需要返回三个输出:列表中所有偶数的和、所有奇数的和、所有能被三整除的数的和。
#高阶函数示例
def return_sum(func, lst):
result = 0
for i in lst:
if func(i):
result += i
return result
lst = [11, 14, 21, 56, 78, 45, 29, 28]
x = lambda a: a % 2 == 0
y = lambda a: a % 2 != 0
z = lambda a: a % 3 == 0
print(return_sum(x, lst))
print(return_sum(y, lst))
print(return_sum(z, lst))
在这里,创建了一个高阶函数,传递了一个部分并改变了过程的行为。这种类型的代码在互联网上随处可见,人们创建高阶函数来控制部分的行为。现在将学习一些Python内置的高阶任务。
Python内置高阶函数
Map函数
# Map函数示例
arr = [2, 4, 6, 8]
arr = list(map(lambda x: x * x, arr))
print(arr)
Filter函数
# Filter函数示例
fruits = ['mango', 'apple', 'orange', 'cherry', 'grapes']
print(list(filter(lambda fruit: 'g' in fruit, fruits)))
Reduce函数
# Reduce函数示例
from functools import reduce
lst = [2, 4, 6, 8, 10]
print(reduce(lambda x, y: x + y, lst)) # 结果为30
# 列表推导式示例
arr = [2, 4, 6, 8]
arr = [i ** 2 for i in arr]
print(arr)
# 字典推导式示例
lst = [2, 4, 6, 8]
D1 = {item: item ** 2 for item in lst}
print(D1)