【发布时间】:2012-01-17 04:17:35
【问题描述】:
这个问题是上一个线程的延续,比较两个具有相同长度的列表:
Is there any efficient easy way to compare two lists with the same length with Mathematica?
给定两个列表A={a1,a2,a3,...an} 和B={b1,b2,b3,...bn},我会说A>=B 当且仅当所有ai>=bi。现在我们有k 列表H={{a11,a12,a13,...a1n}, {a21,a22,a23,...a2n},...,{ak1,ak2,ak3,...akn}},如果存在,我们想找到最大的一个。
这是我的代码:
Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}];h
有什么更好的技巧吗?
编辑:
我想将其定义为如下函数:
maxList[H_]:=Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}];h
但问题是上面的代码跨越了两行,有什么解决办法吗?这是一些有效的代码,但不是那么漂亮
maxList[H_] := Module[{h = H[[1]]}, Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, Length[H]}]; h]
或
maxList[H_]:=Last[Table[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}]]
【问题讨论】:
标签: arrays list wolfram-mathematica mathematica-8