2013-06-19 56 views
1

列出的名单我有含的含量总和的那一刻排序整数列表的列表:排序包含整数

[[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 2], [0, 1, 1], [0, 2, 0], [1, 0, 1], [1, 1, 0], [2, 0, 0], [0, 0, 3], [0, 1, 2], [0, 2, 1], [0, 3, 0], [1, 0, 2], [1, 1, 1], [1, 2, 0], [2, 0, 1], [2, 1, 0], [3, 0, 0], [0, 0, 4], [0, 1, 3], [0, 2, 2], [0, 3, 1], [0, 4, 0], [1, 0, 3], [1, 1, 2], [1, 2, 1], [1, 3, 0], [2, 0, 2], [2, 1, 1], [2, 2, 0], [3, 0, 1], [3, 1, 0], [4, 0, 0]] 

我想通过共同对他们进行升序排列其内容的结构即如

[[1, 0, 0], [2, 0, 0], [3, 0, 0], [4, 0, 0], [0, 1, 0], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 0, 1], [0, 0, 2], [0,0,3], [0,0,4]... ] 

我已经看到了文档,但我无法弄清楚我该如何做到这一点。

+0

这是一个计算机生成的列表?因为你有错误。 –

+0

正确的列表是[[1,0,0],[0,1,0],[0,0,1],[0,0,2],[0,1,1],[0,2 ,[0,1,2],[0,1,2],[0,1,2],[1,0,1],[1,1,0],[2,0,0,0],[0,0,3] ],[0,3,0],[1,0,2],[1,1,1],[1,2,0],[2,0,1],[2,1,0], [3,0,0],[0,0,4],[0,1,3],[0,2,2],[0,3,1],[0,4,0],[1 ,[1,2,3],[1,1,2],[1,2,1],[1,3,0],[2,0,2],[2,1,1],[2,2] ,0],[3,0,1],[3,1,0],[4,0,0]] – diggy

+3

你能解释你排序的意图吗?例如,我不确定“通用结构”是指[1,0,0]在[0,1,0]之前排序。 –

回答

5

这是你以后......

>>> l = [[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 2], [0, 1, 1], [0, 2, 0], [1, 0, 1], [1, 1, 0], [2, 0, 0], [0, 0, 3], [0, 1, 2], [0, 2, 1], [0, 3, 0], [1, 0, 2], [1, 1, 1], [1, 2, 0], [2, 0, 1], [2, 1, 0], [3, 0, 0], [0, 0, 4], [0, 1, 3], [0, 2, 2], [0, 3, 1], [0, 4, 0], [1, 0, 3], [1, 1, 2], [1, 2, 1], [1, 3, 0], [2, 0, 2], [2, 1, 1], [2, 2, 0], [3, 0, 1], [3, 1, 0], [4, 0, 0]] 
>>> l.sort(key=lambda x: (-x.count(0), x[::-1])) 
>>> l 
[[1, 0, 0], [2, 0, 0], [3, 0, 0], [4, 0, 0], [0, 1, 0], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 0, 1], [0, 0, 2], [0, 0, 3], [0, 0, 4], [1, 1, 0], [2, 1, 0], [3, 1, 0], [1, 2, 0], [2, 2, 0], [1, 3, 0], [1, 0, 1], [2, 0, 1], [3, 0, 1], [0, 1, 1], [0, 2, 1], [0, 3, 1], [1, 0, 2], [2, 0, 2], [0, 1, 2], [0, 2, 2], [1, 0, 3], [0, 1, 3], [1, 1, 1], [2, 1, 1], [1, 2, 1], [1, 1, 2]] 
+0

是的,这是完美的,非常感谢! – user124123

+0

@Aya,在没有要求的情况下提供解决方案是优秀软件工程师的特点。你要走很长的路:P – DhruvPathak

1

查看http://docs.python.org/2/howto/sorting.html了解Python排序功能的解释,包括“关键函数”的讨论,该函数为您提供超出基本排序所需的任何其他灵活性。

+0

我在我的问题中提到了我看过的文档。 – user124123

+0

所以你做到了。 :-) –

1

在排序中使用排序标准函数key

input_list = [[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 2], [0, 1, 1], [0, 2, 0], [1, 0, 1], [1, 1, 0], [2, 0, 0], [0, 0, 3], [0, 1, 2], [0, 2, 1], [0, 3, 0], [1, 0, 2], [1, 1, 1], [1, 2, 0], [2, 0, 1], [2, 1, 0], [3, 0, 0], [0, 0, 4], [0, 1, 3], [0, 2, 2], [0, 3, 1], [0, 4, 0], [1, 0, 3], [1, 1, 2], [1, 2, 1], [1, 3, 0], [2, 0, 2], [2, 1, 1], [2, 2, 0], [3, 0, 1], [3, 1, 0], [4, 0, 0]] 

sorted_list = sorted(input_list,key=my_sorting_func) 
+0

啊是的,我已经看到了这个,但我不知道如何写'键,'我在想input_list [:: 1]的东西,但我完全不确定 – user124123

+0

如果你把“0”积极的整数,会完成你在找什么? –