在 Mathematica 中的对列表中找到最大对

Find the max pair in a list of pairs in Mathematica

有没有一种简单的方法可以从对列表中找到最大元素?基于列表构造(这些对应于坐标),有一个明确定义的最大值 {x_max, y_max}。例如,我正在寻找一个函数 MaxElement

MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]

这将 return {1,1}

MaxElement[list_] := Module[{cases},
  cases = Cases[list, Max /@ Transpose[list]];
  If[cases == {}, "no clear maximum pair", First@cases]]

MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]
{1, 1}
MaxElement[{{0, 2}, {0, 1}, {2, 1}, {1, 0}}]
no clear maximum pair

或者您可以使用内部函数 MaximalBy,例如

MaximalBy[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}, Norm]

MaximalBy 的第二个参数是确定第一个参数中两个元素中哪个元素最大的函数。在这种情况下 returns

{{1,1}}

如果此规则未分隔所有元素,则它 returns 所有最大元素。所以

MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm]

returns

{{0,1},{1,0}}

但是 3 参数形式

MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm, 1]

returns 仅找到第一个最大元素。