以更好的模式重写我的简单Python代码
我有一个函数以更好的模式重写我的简单Python代码,python,function,for-loop,lambda,tuples,Python,Function,For Loop,Lambda,Tuples,我有一个函数 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 我想用更好的方式来写。我试过了 def max_f2(tup, val): return (m
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
我想用更好的方式来写。我试过了
def max_f2(tup, val):
return (max(funz(val) for funz in tup))
但我应该返回一个函数,而不是一个值。我怎么能
以下是一些正确输出的示例
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
您可以使用带有lambda函数的
max()
和键
参数执行此操作:
def max_f(tup, val):
return max(tup, key=lambda x: x(val))
输出:
>>> 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