欲实现以下功能:

a是一个二维数组
a = [[1,2],[4,5],[1,6],[5,3],[3,8],[12,34],[12,33],[0,12]]
现在要对这个二维数组排序,规则是:
首先按a[i][0]升序排序
如果a[i][0]值相同,按a[i][1]升序排序

list自带的sort函数是用key来实现的(有点儿类似哈希),需要将每个元素映射为可比较的值。

我的映射思路: key = a[i][0]*1000+a[i][1],也就是映射为整数

a = [[1,2],[4,5],[1,6],[5,3],[3,8],[12,34],[12,33],[0,12]]
a.sort(key=lambda x:x[0]*1000+x[1])
print(a)
# 输出:
# [[0, 12], [1, 2], [1, 6], [3, 8], [4, 5], [5, 3], [12, 33], [12, 34]]

lambda表达式不是必须的,一下两种写法等同:

# 写法1
def key_exp(x):
    return x[0]*1000 +x[1]
a.sort(key=key_exp)

# 写法2
a.sort(key=lambda x:x[0]*1000+x[1])

复习一下lambda表达式:

def sum(arg1, arg2):
   total = arg1 + arg2
   return total
# 使用lambda表达式的写法:

lambda arg1, arg2: arg1 + arg2  # arg1, arg2可以传入默认值

如:

x = 1
y = 2
add = lambda a,b:a+b
print(add(x,y))