2014-09-25 55 views
0

这是一个有趣的问题:订购多个分类阵列

我已经整理阵列

a1 : [50,30,20,5] 
a2 : [30,10,3,1] 
a3 : [50,40,30,10] 

每个数组进行排序,我需要按顺序排列,其中阵列具有最高的号码安排,如果有一个领带考虑数组中的下一个元素。

Ex。在上面的例子中50 A1和A3之间的配合,所以我们比较30和40,因此顺序是

A3,A1,A2

如何在Python做到这一点?实现这个的算法应该是什么。

+0

算法被称为 “字典序”,用人类语言词典比喻。要判断是否在'aardvark'之前或之后出现'and',你比较第一个字母,它们都是'a',所以你比较第二个字母,'n'出现在'a'之后,所以你有你的答案。只需将“letter”替换为“list element”,它就是您想要的相同算法。 – abarnert 2014-09-25 18:41:18

回答

16

比较Python中的两个列表默认情况下会比较这些元素,所以您只需将列表放在列表中并对其进行排序即可。

my_arrays = [ 
    [50,30,20,5], 
    [30,10,3,1], 
    [50,40,30,10] 
] 

my_arrays.sort(reverse=True) 

print my_arrays 

结果:

[ 
    [50, 40, 30, 10], 
    [50, 30, 20, 5], 
    [30, 10, 3, 1] 
]