首页 > 解决方案 > Python 中带有 3 个参数的 Lambda 函数

问题描述

我正在使用 lambda 函数来检查最大值,传递 3 个参数

from functools import reduce

# function to check bigger item
f = lambda a,b,c: a if (a > b) else (b if (b > c) else c)

# reduce function
reduce(f, [47, 11, 42, 102, 13])

但是我收到这样的错误


TypeError Traceback(最近一次调用最后一次)

5 
6 # reduce function
7 reduce(f, [47, 11, 42, 102, 13, 21])

TypeError: <lambda>() missing 1 required positional argument: 'c'

标签: pythonpython-3.xlambda

解决方案


如果您正在寻找列表中最大的元素,一次比较三个元素的工作方式与一次比较两个元素的工作方式相同。这两种方式花费相同的时间。即使您制作了一个类似reduce但一次需要 3 个元素的函数,您的想法也存在缺陷,因为如果列表由 4 个或 6 个或 8 个或...元素组成怎么办,它仍然无法按预期工作.

from functools import reduce

# function to check bigger item
g = lambda a,b: a if (a > b) else b 
f(1,3,4)
# reduce function
reduce(g, [47, 11, 42, 102, 13])

推荐阅读