改变另一部分,我只是想知道排序:给定一个列表{{{3,1,2},{4,2,5}},{{7,1},{2,4}}}
与数学
,我想第一个组件进行排序,然后让第二组分变化的第一个广告。期望的结果是{{{1,2,3},{2,5,4}},{{1,7},{4,2}}}
。
我该怎么做?非常感谢您的帮助。
改变另一部分,我只是想知道排序:给定一个列表{{{3,1,2},{4,2,5}},{{7,1},{2,4}}}
与数学
,我想第一个组件进行排序,然后让第二组分变化的第一个广告。期望的结果是{{{1,2,3},{2,5,4}},{{1,7},{4,2}}}
。
我该怎么做?非常感谢您的帮助。
我建议:
#[[ All, [email protected]#[[1]] ]] & /@ list
这比密歇根州短艾尔,几乎是效率的两倍。
micSort = {#[[Ordering[#]]], #2[[Ordering[#]]]} & @@@ # &;
wizSort = #[[All, [email protected]#[[1]]]] & /@ # &;
a = RandomInteger[100, {2400, 2, 15}];
[email protected] === [email protected]
[email protected]@Do[#@a, {25}] & /@ {micSort, wizSort}
Out[1]= True
Out[2]= {0.453, 0.282}
这里的作业安全,确保一个班轮=)
In[16]:= list={{{3,1,2},{4,2,5}},{{7,1},{2,4}}};
In[17]:= {#[[Ordering[#]]],#2[[Ordering[#]]]}& @@@ list
Out[17]= {{{1,2,3},{2,5,4}},{{1,7},{4,2}}}
发生了什么,这可能是一个更加清楚一点为:
sorter[{a_, b_}] :=
Module[{order = Ordering[a]},
{a[[order]], b[[order]]}
]
In[19]:= sorter /@ list
Out[19]= {{{1, 2, 3}, {2, 5, 4}}, {{1, 7}, {4, 2}}}
我喜欢'Ordering',这是一个非常有用的功能。但有时候这是一个脑筋急转弯。你知道'ListOfNumbers // Ordering // Ordering'是什么吗? – 2011-03-09 11:00:13
它给出了排列,如果应用于排序的ListOfNumber,将返回原始列表。 – Sasha 2011-03-09 13:42:13
@Sasha是的,这是无聊的方式来形容它;-)然而,有更多有用的方式来看结果。任何想法? – 2011-03-09 15:39:13
感谢您的接受。 :-) – 2011-04-14 08:01:18