如何在Python中对列表进行排序?

问题描述:

我有一个嵌套列表如何在Python中对列表进行排序?

a=[[x1,y1],[x2,y2],[x1,y2],[x2,y1],[x7,y7],[x1,y3]] 

我想作为对它进行排序:

a=[[x1,y1],[x1,y2],[x1,y3],[x2,y1],[x2,y2],[x7,y7]] 

我试图用lambda函数,但它不会编译:

a=sorted(a,lambda x,y:x==y?x[0]+x[1],x[0]) 

怎么办我用sorted来获得我想要的输出?

+2

能告诉你一个实际的,可运行的例子,并解释默认排序不会做什么你需要什么? – NPE 2013-04-07 10:52:50

+0

我想看看我们是否可以使用上述问题的lambda函数 – learner 2013-04-07 11:03:15

+1

@learner:由于语法不正确,我们只是猜测你想要什么。你需要更清楚地表明你想要这种行为。 – 2013-04-07 11:14:55

你可以使用实际的Python语法,如conditional expression

sorted(a, key=lambda x: x[0] + x[1] if x == y else x[0]) 

这是基于一个解释你?语法的JavaScript条件表达式的语法。

当然,这是假设有某个地方定义了一个独立y变量:

>>> a = [[1,1], [2,2], [1,2], [2,1], [7,7], [1,3]] 
>>> y = [1, 1] 
>>> sorted(a, key=lambda x: x[0] + x[1] if x == y else x[0]) 
[[1, 2], [1, 3], [1, 1], [2, 2], [2, 1], [7, 7]] 
+0

我得到这个Martjin的错误 - 看起来像一个缺少lambda的位置参数。 – jszakmeister 2013-04-07 11:17:51

相信sorted(a)会给你想要的东西,右外的盒子:

>>> a = [[1,1], [2,2], [1,2], [2,1], [7,7], [1,3]] 
>>> sorted(a) 
[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [7, 7]]