python - 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'
解决方案
如果您正在寻找列表中最大的元素,一次比较三个元素的工作方式与一次比较两个元素的工作方式相同。这两种方式花费相同的时间。即使您制作了一个类似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])
推荐阅读
- xamarin.forms - 将 DataTemplate 附加到 Xamarin.Forms ShellContent
- wordpress - Wordpress SCSS 文件观察器 - PhpStorm
- c# - 球员跳得不好
- delphi - delphi中的双缓冲不够
- postgresql - 连接到 Postgres Docker 服务器 - 身份验证失败
- maven - 尝试在 Jenkins 上使用 maven 对 groovy 进行单元测试时,测试类无法解析主类
- java - 使用 apache common csv 生成和下载 CSV 文件
- c# - 我使用 Firebase 的统一登录不起作用
- flutter - 如何在 Flutter 中使用多个 ChangeNotifierProvider?
- excel - 无法在数据透视表中设置过滤器 - 错误 424