1、sorted和sort的常规使用
2、关于自定义比较函数
3、试验
from functools import cmp_to_key
ll = [(2,3,10),(1,2,3),(5,6,7),(2,5,10),(2,4,10)]# 根据一个维度进行排序,这里根据第一维排序
ll1 = sorted(ll,key = lambda x:x[0])
print('根据一个维度进行排序,这里根据第一维排序:\n',ll1)#[(1, 2, 3), (2, 3, 10), (2, 5, 10), (2, 4, 10), (5, 6, 7)]# 同时对两个维度进行排序,排序方式相同,降序或者升序,这是先排序第一个数,再在第一个数有序的情况下,对第二个数进行排序
ll2 = sorted(ll,key=lambda x:(x[0],x[1]))
print('同时对两个维度进行排序,排序方式相同,降序或者升序:\n',ll2)# [(1, 2, 3), (2, 3, 10), (2, 4, 10), (2, 5, 10), (5, 6, 7)]# 自定义key函数
def compare(x,y):if x < y: # 就是两个数进行比较,要是返回为正数,则交换位置,所以这里是当x<y是返回整数,所以是降序操作return 1elif x > y:return -1else:return 0
ll3 = sorted(ll,key = cmp_to_key(compare)) # 应用到所有维度上,效果如上面所示
print('自定义降序key函数对所有维度使用:\n',ll3)# [(5, 6, 7), (2, 5, 10), (2, 4, 10), (2, 3, 10), (1, 2, 3)]ll4 = sorted(ll,key = cmp_to_key(lambda x,y:compare(x[2],y[2])))
print('lambda对所有维度降序使用:\n',ll4)# [(5, 6, 7), (2, 5, 10), (2, 4, 10), (2, 3, 10), (1, 2, 3)]
结果:
根据一个维度进行排序,这里根据第一维排序:
[(1, 2, 3), (2, 3, 10), (2, 5, 10), (2, 4, 10), (5, 6, 7)]
同时对两个维度进行排序,排序方式相同,降序或者升序:
[(1, 2, 3), (2, 3, 10), (2, 4, 10), (2, 5, 10), (5, 6, 7)]
自定义降序key函数对所有维度使用:
[(5, 6, 7), (2, 5, 10), (2, 4, 10), (2, 3, 10), (1, 2, 3)]
lambda对所有维度降序使用:
[(2, 3, 10), (2, 5, 10), (2, 4, 10), (5, 6, 7), (1, 2, 3)]
4、问题
怎么对一个维度降序,然后再这个维度顺序不变的情况下,对另一个维度实现升序???