改變另一部分,我只是想知道排序:給定一個列表{{{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