我有一个函数可以返回某些操作列表的值。我需要得到一个(动作,值)元组的最小值或最大值(取决于minmaxFunction)。
minmaxFunction,可以是min或max:
minmaxFunction = min
or
minmaxFunction = max
现在我用:
bestValue = None
bestAction = None
for action in moves:
subValue = someFunction(action)
if bestValue is None or minmaxFunction(bestValue, subValue) != bestValue:
bestValue = subValue
bestAction = action
return bestAction, bestValue
我很确定有更好的(pythonic)方法。也许像是
listOfTuples = [(action, someFunction(action)) for action in moves]
and here something with reduce() ????
答案 0 :(得分:3)
您可以像使用minmax
或min
一样使用max
功能:
lst = [-6,-5,-4,4,5,6]
def foo(x):
return x*x
minmax = min
print minmax((foo(x), x) for x in lst)[1] # -4
答案 1 :(得分:2)
这是否回答了你的问题:
sorted([(action, someFunction(action)) for action in moves], key=lambda x:x[1])[0]
它使用元组的第二个值作为键对列表进行排序,然后返回数组的第一个。如果你想要第一个或最后一个,我不能完全确定;最后将0
更改为-1
。