我有一个嵌套列表
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
来获得我想要的输出?
我有一个嵌套列表
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
来获得我想要的输出?
我相信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]]
您可以使用实际的 Python 语法,例如条件表达式:
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]]