首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我该怎么整理这张单子?

我该怎么整理这张单子?
EN

Stack Overflow用户
提问于 2010-01-07 11:40:52
回答 10查看 672关注 0票数 4

我有一份名单。

代码语言:javascript
运行
复制
List<List<T>> li = {
   {a1,a2,a3 ... aN},
   {b1,b2,b3 ... bN},
   ...
};

double foo(List<T> list)
{
    // do something 
    // e.g {1,2,3} 
    // it = 1 + 2 + 3

    return it;
}

现在,我想对li进行排序,使foo(x)越高,x越高,它就应该出现在排序列表中。

用C#/Python/任何其他语言来说最好的方法是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-07 11:44:47

再加上一点LINQ:

代码语言:javascript
运行
复制
var q = from el in li
        orderby foo(el)
        select el;
li = q.ToList();
票数 10
EN

Stack Overflow用户

发布于 2010-01-07 11:44:55

这是Python的方式:只需将函数作为key参数传递给sorted().sort()

代码语言:javascript
运行
复制
>>> mylist = [123, 765, 4, 13]
>>> def mod5(x):
...     return x%5
...
>>> sorted(mylist, key = mod5)
[765, 123, 13, 4]
>>> sorted(mylist, key = mod5, reverse = True)
[4, 123, 13, 765]
票数 5
EN

Stack Overflow用户

发布于 2010-01-07 15:00:37

红宝石:

代码语言:javascript
运行
复制
mylist = [[1,2,3],
             [3,5,9],
             [1,1,1],
             [10,23,14]]

sortedlist = mylist.sort {|a,b| b.inject {|sum, n| sum + n } <=> a.inject {|sum,n| sum + n}}

我不确定Code的规则和我没有编写foo方法,但是在foo中可以很容易地得到和。

我的测试输出:

代码语言:javascript
运行
复制
puts sortedlist.inspect

[10、23、14、3、5、9、1、2、3、1、1、1、1]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2019951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档