3
lists
模塊提供了一個函數來查找列表的最大值,lists:max(List)
。Erlang列表:找到最大定義的元素
有沒有像lists:maxfun(Fun, List)
這樣的功能?給定的樂趣應該用於所有元素,maxfun
應該給這個元素而不是值。例如:
Fun gets [X,Y] and calcs X+Y
lists:maxfun(Fun,[[1,1],[1,2]]} -> [1,2].
lists
模塊提供了一個函數來查找列表的最大值,lists:max(List)
。Erlang列表:找到最大定義的元素
有沒有像lists:maxfun(Fun, List)
這樣的功能?給定的樂趣應該用於所有元素,maxfun
應該給這個元素而不是值。例如:
Fun gets [X,Y] and calcs X+Y
lists:maxfun(Fun,[[1,1],[1,2]]} -> [1,2].
可以使用例如這一招:如果你使用的第一個元素
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]
你可以用列表:與foldl吧,這樣的事情:
lists:foldl(fun([X1,Y1],[X2,Y2]) when X1 + Y1 > X2 + Y2 ->
[X1,Y1];
(_, Acc) ->
Acc
end, [0,0], ListOfLists).
的名單作爲初始累加器,那麼你將始終有一個很好的初始值。 – rvirding 2011-01-22 00:36:39