Python中的Lambda函数是什么,为什么我们需要它?

Python中的Lambda函数是什么,为什么我们需要它?

在本文中,我们将学习Python中的Lambda函数以及为什么我们需要它,并看一些Lambda函数的实际例子。

阅读更多:Python 教程

Python中Lambda函数是什么?

Lambda函数,常被称为 ‘匿名函数’ 与普通的Python函数相同,只是它可以定义 没有名称。 使用 def 关键字来定义普通函数,而使用 lambda 关键字来定义匿名函数。 但是,它们仅限于单个表达式行。 和普通函数一样,它们可以接受多个参数。

语法

lambda arguments: expression
Python
  • 此函数接受任意数量的输入,但仅评估并返回一个表达式。

  • Lambda函数可以用于需要函数对象的任何地方。

  • 您必须记住,Lambda函数在语法上仅限于单个表达式。

  • 除了函数中的其他类型的表达式外,在特定的编程领域中它具有各种各样的用途。

我们为什么需要Lambda函数?

  • 与使用 def 关键字编写的普通Python函数相比,Lambda函数需要更少的代码行。 不过,这并不完全正确,因为使用def定义的函数可以在单行中定义。 但是, def 函数通常是由多行定义的。

  • 当需要一个函数用于较短时期(临时),通常要在其他函数内使用该函数,例如filter,map或reduce时,通常会使用它们。

  • 使用Lambda函数可以定义一个函数并立即在定义的末尾调用它。 这对于def函数是不可能的。

Python Lambda函数的简单示例

示例

# 输入字符串
inputString = 'TUTORIALSpoint'

# 使用Lambda函数将给定的输入字符串转换为小写并反转
reverse_lower = lambda inputString: inputString.lower()[::-1]

print(reverse_lower(inputString))
Python

输出

执行上述程序后,将生成以下输出:

tniopslairotut
Python

在条件检查中使用Lambda函数

示例

# 使用Lambda函数将数字格式化为2位小数
formatNum = lambda n: f"{n:e}" if isinstance(n, int) else f"{n:,.2f}"

print("整数格式化:", formatNum(1000))
print("浮点格式化:", formatNum(5555.4895412))
Python

输出

执行上述程序后,将生成以下输出:

整数格式化: 1.000000e+03
浮点格式化: 5,555.49
Python

Lambda函数和使用def定义的函数之间有什么区别?

示例

# 创建一个函数,返回传递给它的数字的平方def square(x):
    return x * x


# 使用Lambda函数创建一个函数,返回传递给它的数字的平方
lambda_square = lambda x: x * x


# 通过将随机数字传递给上述使用def关键字定义的平方函数来打印数字的平方根
print("使用使用‘def’关键字定义的函数的平方根:", square(4))

# 通过将随机数字传递给上述仅使用Lambda关键字定义的lambda_square函数来打印数字的平方根
print("使用使用‘lambda’关键字定义的函数的平方根:", lambda_square(4))
Python

输出

执行上述程序后,将会生成以下输出:

使用“def”关键字的函数计算一个数字的平方:16
使用“lambda”关键字的函数计算一个数字的平方:16
Python

如上例所示, square()lambda_square() 函数工作相同并且预期 。让我们更仔细地查看示例,并找出它们之间的区别。

使用 lambda 函数 不使用 lambda 函数
支持返回一些值的单行语句。 允许在函数块内使用任意数量的行。
非常适合进行小操作或数据操作。 在需要多行代码的情况下很有用。
减少了代码可读性。 我们可以通过使用注释和函数说明来提高可读性。

Python lambda 函数的实际用途

示例

使用 Lambda 函数与列表推导式

is_odd_list = [lambda arg=y: arg * 5 for y in range(1, 10)]

# 循环访问每个 lambda 函数并调用函数以获取乘积
for i in is_odd_list:
    print(i())
Python

输出

在执行上述程序时,将生成以下输出。

5
10
15
20
25
30
35
40
45
Python

在列表推导的每次迭代中,都将创建一个新的 lambda 函数,其中默认参数 y (其中 y 是迭代中的当前项目)。稍后,在 for 循环中,我们使用 i() 调用相同的函数对象并使用默认参数获取所需的值。因此, is_odd_list 保存了 lambda 函数对象的列表。

示例

使用 Lambda 函数和 if-else 条件语句

# 使用 lambda 函数查找两个数字中的最大数字
find_maximum = lambda x, y : x if(x > y) else y

print(find_maximum(6, 3))
Python

输出

在执行上述程序时,将生成以下输出。

6
Python

示例

使用 lambda 函数和多个语句

inputList = [[5,2,8],[2, 9, 12],[10, 4, 2, 7]]

# 使用 lambda 函数对给定的每个子列表进行排序
sorted_list = lambda k: (sorted(e) for e in k)

# 获取第二个最大元素
second_largest = lambda k, p : [x[len(x)-2] for x in p(k)]
output = second_largest(inputList, sorted_list)

# 打印第二个最大元素
print(output)
Python

输出

在执行上述程序时,将生成以下输出。

[5, 9, 7]
Python

Python lambda 函数与 filter()

示例

inputList = [3, 5, 10, 7, 24, 6, 1, 12, 8, 4]

# 使用 lambda 和 filter 函数从输入列表中获取偶数。
evenList = list(filter(lambda n: (n % 2 == 0), inputList))
# 打印输入列表中的偶数。
print("输入列表中的偶数:", evenList)
Python

输出

在执行上述程序时,将生成以下输出。

输入列表中的偶数: [10, 24, 6, 12, 8, 4]
Python

Python lambda 函数与 map()

Pythonmap() 函数接受函数和列表作为参数。该函数使用 lambda 函数和列表进行调用,并返回包含每个项目的 lambda 修改后的新列表。

示例

使用 lambda 和 map() 函数将所有列表元素转换为小写字母

# 输入列表
inputList = ['HELLO', 'TUTORIALSpoint', 'PyTHoN', 'codeS']

# 使用 lower() 函数结合 lambda() 和 map() 函数将所有输入列表元素转换为小写,并返回结果列表
lowercaseList = list(map(lambda animal: animal.lower(), inputList))

# 打印结果列表
print("将所有输入列表元素转换为小写:\n", lowercaseList)
Python

输出

执行以上程序将生成以下输出 –

将所有输入列表元素转换为小写:
 ['hello', 'tutorialspoint', 'python', 'codes']
Python

结论

在本教程中,我们深入学习了 Python 中的 lambda 函数,并提供了多个示例。我们还学习了 lambda 函数和 def 函数之间的区别。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册