Alb*_*rto 4 python lambda for-loop tuples function
我有一个功能
def max_f(tup, val):
max = tup[0](val)
out = tup[0]
for funz in tup:
new = funz(val)
if new > max:
max = new
out = funz
return out
Run Code Online (Sandbox Code Playgroud)
我想以更好的方式写它。我试过
def max_f2(tup, val):
return (max(funz(val) for funz in tup))
Run Code Online (Sandbox Code Playgroud)
但我应该返回一个函数,而不是一个值。我怎么能?
这些是正确输出的一些示例
tupleFunz=(lambda x: x + 3 ,lambda x: x * 2,lambda x: x % 2)
max_f(tupleFunz,4)(8) #=> 16
max_f(tupleFunz,1)(8) #=> 11
Run Code Online (Sandbox Code Playgroud)
您可以使用max()和key带有 lambda 函数的参数来执行此操作:
def max_f(tup, val):
return max(tup, key=lambda x: x(val))
Run Code Online (Sandbox Code Playgroud)
输出:
>>> tupleFunz=(lambda x: x + 3 ,lambda x: x * 2,lambda x: x % 2)
>>> max_f(tupleFunz,4)(8)
16
>>> max_f(tupleFunz,1)(8)
11
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |