lists
模块提供了一个函数来查找列表的最大值lists:max(List)
。
是否有像lists:maxfun(Fun, List)
这样的功能?给定的乐趣应该用于所有元素,maxfun
应该返回此元素而不是值。例如:
Fun gets [X,Y] and calcs X+Y
lists:maxfun(Fun,[[1,1],[1,2]]} -> [1,2].
答案 0 :(得分:4)
你可以使用这个技巧:
1> F=fun([X,Y]) -> X+Y end.
#Fun<erl_eval.6.13229925>
2> element(2, lists:max([ {F(X), X} || X <- [[1,1],[1,2]]])).
[1,2]
答案 1 :(得分:1)
您可以使用list:foldl,类似这样:
lists:foldl(fun([X1,Y1],[X2,Y2]) when X1 + Y1 > X2 + Y2 ->
[X1,Y1];
(_, Acc) ->
Acc
end, [0,0], ListOfLists).