內部排序名單我有一個嵌套列表: {{9, 8, 7}, {8, 7, 6}, {7, 6, 5}, {6, 5, 4}, {5, 4, 3}, {4, 3, 2}, {3, 2, 1}}
嵌套列表
我需要在列表中的列表進行排序,以創建:
{{7, 8, 9}, {6, 7, 8}, {5, 6, 7}, {4, 5, 6}, {3, 4, 5}, {2, 3, 4}, (1, 2, 3}}
我該怎麼辦呢?
內部排序名單我有一個嵌套列表: {{9, 8, 7}, {8, 7, 6}, {7, 6, 5}, {6, 5, 4}, {5, 4, 3}, {4, 3, 2}, {3, 2, 1}}
嵌套列表
我需要在列表中的列表進行排序,以創建:
{{7, 8, 9}, {6, 7, 8}, {5, 6, 7}, {4, 5, 6}, {3, 4, 5}, {2, 3, 4}, (1, 2, 3}}
我該怎麼辦呢?
您需要Map
函數,該函數將函數應用於列表的每個元素。
也就是,Map[f, {1, 2, 3}]
給出{f[1], f[2], f[3]}
。
在這種情況下,您可以使用Map[Sort, list]
。 Map
也有中綴運算符,/@
:
In[1]:= Map[Sort, {{9, 8, 7}, {8, 7, 6}, {7, 6, 5}, {6, 5, 4},
{5, 4, 3}, {4, 3, 2}, {3, 2, 1}}]
Out[1]= {{7, 8, 9}, {6, 7, 8}, {5, 6, 7}, {4, 5, 6},
{3, 4, 5}, {2, 3, 4}, {1, 2, 3}}
In[2]:= Sort /@ {{9, 8, 7}, {8, 7, 6}, {7, 6, 5}, {6, 5, 4},
{5, 4, 3}, {4, 3, 2}, {3, 2, 1}}
Out[2]= {{7, 8, 9}, {6, 7, 8}, {5, 6, 7}, {4, 5, 6},
{3, 4, 5}, {2, 3, 4}, {1, 2, 3}}
這可能是要知道有用的訂購也將工作
lst = {{9, 8, 7}, {8, 7, 6}, {7, 6, 5}, {6, 5, 4}, {5, 4, 3}, {4, 3,
2}, {3, 2, 1}};
Map[#[[Ordering[#]]] &, lst]
但對於這種類型的實例的方法比地圖/排序
慢lst2 = RandomInteger[100, {10^5, 3}];
Map[Sort, lst2]; // Timing
Map[#[[Ordering[#]]] &, lst2]; // Timing
{0.175955,NULL}
{1.02087,空}
訂購可以通過
位置lst3 = {{a1, 4, c1}, {a2, 3, c2}, {b3, 1, d3}, {e4, 2, f4}};
lst3[[Ordering[lst3[[All, -2]]]]] // MatrixForm
是的,就是這樣,地圖就是我想到的。非常感謝。 – Ron 2010-11-21 04:25:33
我不可能得到什麼的問題實際上意味着排序是有用的。你能解釋一下你面臨的問題嗎? – vinothkr 2010-11-19 06:00:27