- 积分
- 0
- 注册时间
- 2009-9-9
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2009-9-10 00:17:59
|
显示全部楼层
来自 江苏无锡
顺便说一下,要非常小心的使用SortBy 用Sort, 配合着有 Split, SplitBy
看我下面的例子,我用SortBy 做了增强:(我把出现如 First@cond 这样的地方改成了 : First[cond] , 因为这个PHP论坛会把First@cond改成 [email=First@cond]First@cond[/email], 真是晕S了,那帮人不知道我们的mathematica语言的特殊性 )
list = {{0, 9, 2}, {3, 3, 2}, {1, 4, 0}, {9, 9, 1}, {0, 4, 7}, {0, 2,
8}, {0, 8, 5}, {5, 2, 4}, {3, 7, 2}, {6, 2, 3}, {8, 4, 9}, {2, 8,
2}};
(* 增强型的SortBy,可以按多个条件依次排序 *)
sortByEn[list_, cond_] :=
Flatten @@ {SortBy[#, Last[cond]] & /@ SplitBy[list, First[cond]],
1};
EnhancedSortBy[list_, condlist_] :=
Fold[sortByEn, SortBy[list, First[condlist]],
Partition[condlist, 2, 1]];
EnhancedSortBy[list, {Last, Total, Part[#, 2] &}]
EnhancedSortBy[list, {Last, Total}]
Clear[EnhancedSortBy, sortByEn]
Clear |
|