在 Python 中的 Lambda 函数中传递多个参数
lambda 形式或 lambda 表达式是 Python 中的匿名函数。它们是可以使用 Python 中保留的 lambda
关键字创建的内联函数。
本文将讨论 Python 中的 lambda 函数,并学习如何处理其中的多个参数。
Python 中的 Lambda 函数
一个 lambda 函数由三部分组成:lambda
关键字、参数或绑定变量以及函数体。函数体只能有一个 Python 表达式,因为这些函数是内联的。
这些函数不仅可以立即调用,还可以像其他常规 Python 函数一样使用。
Lambda 函数具有以下语法:
lambda < parameters comma seperated >: expression
请注意,函数体中的表达式应该返回一些值。如果表达式不返回任何值,则 lambda 函数的结果将是 None
值。
对于内联调用,我们将 lambda 函数括在括号内,并将其旁边的参数值放在括号内。
以下是此操作的语法:
(lambda < parameters comma seperated > : expression) ( < parameters comma seperated > )
为了理解这些 lambda 函数,让我们创建一个将两个数字相乘的 lambda 函数。正如我们所讨论的,这些函数可以立即调用并用作常规 Python 函数,因此示例将包括 lambda 函数的两个版本。
乘法示例参考以下代码:
# Regular function calls
def multiply(a, b):
return a * b
print(multiply(1, 2))
print(multiply(10, 5))
print(multiply(10.5, 9.3))
print(multiply(0.945, -5.645))
print(multiply(1000e9, 0), end="\n\n")
# Inline invocation
print((lambda a, b: a * b)(1.1, 1.2))
print((lambda a, b: a * b)(10, 5))
print((lambda a, b: a * b)(10.5, 9.3))
print((lambda a, b: a * b)(0.945, -5.645))
print((lambda a, b: a * b)(1000e9, 0))
输出:
2
50
97.65
-5.334524999999999
0.0
1.32
50
97.65
-5.334524999999999
0.0
为了更精确,让我们考虑另外三个示例,我们将从数字列表中过滤奇数值,计算列表元素的平方,以及计算列表元素的立方根。
第一个示例请参考以下 Python 代码:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def filter_odd(a):
return a % 2 != 0
print(list(filter(filter_odd, x)))
print(list(filter(filter_odd, y)))
print(list(filter(filter_odd, z)), end="\n\n")
# Inline invocation
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(x))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(y))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(z))
输出:
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
有关第二个示例,请参阅以下 Python 代码片段:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** 2
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** 2, array)))(x))
print((lambda array: list(map(lambda a: a ** 2, array)))(y))
print((lambda array: list(map(lambda a: a ** 2, array)))(z))
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
并且,请参阅以下第三个示例的 Python 代码片段:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** (1 / 3)
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(x))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(y))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(z))
输出:
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
在 Lambda 函数中传递多个参数
要在 lambda 函数中传递多个参数,我们必须提及所有以逗号分隔的参数。让我们通过一个例子来理解这一点。
我们将创建一个带有三个参数的 lambda 函数;一个列表和两个整数。lambda 函数将从每个列表元素中添加第一个整数并减去第二个整数。
为此,请参阅以下 Python 代码:
x1 = [1, 8, 27, 64, 125, 216, 343, 512]
x2 = 5
x3 = 6
y1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
y2 = 4
y3 = 1
z1 = [78, 9797, 97, 985, 75473, 2845, 74]
z2 = 99
z3 = 99
# Regular function calls
def modify(a, b, c):
return [x + b - c for x in a]
print(modify(x1, x2, x3))
print(modify(y1, y2, y3))
print(modify(z1, z2, z3), end="\n\n")
# Inline invocation
print((lambda a, b, c: [x + b - c for x in a])(x1, x2, x3))
print((lambda a, b, c: [x + b - c for x in a])(y1, y2, y3))
print((lambda a, b, c: [x + b - c for x in a])(z1, z2, z3))
输出:
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
相关文章
在 Python 中导入 OpenSSL
发布时间:2023/12/20 浏览次数:147 分类:Python
-
本教程演示了如何在 Python 中使用 OpenSSL。我们旨在学习如何在 Python 中使用 OpenSSL。安装 OpenSSL Python 库
如何在 Python 中从路径获取文件名
发布时间:2023/12/20 浏览次数:74 分类:Python
-
本教程将演示 Python 中如何从路径中获取文件名,不论是什么操作环境下。使用 ntpath 库从路径中获取文件名 定义路径的方式可以是不同的。
在 Python 中获取绝对路径
发布时间:2023/12/20 浏览次数:94 分类:Python
-
它演示了如何在 Python 中获取一个文件的绝对路径。使用 abspath() 来获取 Python 中的绝对路径
在 Python 中获取父目录
发布时间:2023/12/20 浏览次数:166 分类:Python
-
本教程演示了如何在 Python 中获取一个路径的父目录。本教程将讲解在 Python 中获取一个路径的父目录的各种方法。父目录是指高于或高于给定目录或文件的目录。
在 Python 中从路径中获取目录
发布时间:2023/12/20 浏览次数:199 分类:Python
-
本教程演示如何在 Python 中提取文件路径的一部分。文件路径是表示文件在系统或目录中的位置的唯一字符串。有时,你可能必须从文件路径中检索或提取任何部分或块。
在 Python 中将循环步长递增 2
发布时间:2023/12/20 浏览次数:97 分类:Python
-
在 Python 中,循环可以使步长为 2 的值递增。为此目的,使用了诸如 for loop,range()和 slicing 之类的不同方法。
Python 中的一行中的 for 循环
发布时间:2023/12/20 浏览次数:115 分类:Python
-
本教程演示了如何在 Python 中实现一行中的 for 循环。在 Python 中,一行 for 循环有多种形式;一个简单的 for 循环可以遍历可迭代对象或序列。另一个可以是简单的列表推导,也可以是带有 if
Python 中的 do...while 循环
发布时间:2023/12/20 浏览次数:108 分类:Python
-
本教程演示了如何在 Python 中模拟 do-while 循环。默认情况下,Python 中不存在 do-while 循环,但是我们可以使用 while 循环生成一些代码,以使某些事情可以充当 do-while 循环。
Python 中的并行 for 循环
发布时间:2023/12/20 浏览次数:173 分类:Python
-
本教程演示如何在 Python 中执行并行处理。在 Python 中使用 multiprocessing 模块并行化 for 循环