Python3的各种排序方法

升序排序:

>>> d = [3, 2, 4, 1]
>>> d.sort()
>>> d
[1, 2, 3, 4]

 降序排序:

>>> d = [3, 2, 4, 1]
>>> d.sort(reverse = True)
>>> d
[4, 3, 2, 1]

 自定义排序:

 按个位数大小排序

>>> d = [11, 0, 28, 123, 9]
>>> def cmp(x):
	return x % 10

>>> d.sort(key = cmp)
>>> d
[0, 11, 123, 28, 9]

 当然可以写成匿名函数的形式

>>> d = [11, 0, 28, 123, 9]
>>> d.sort(key = lambda x : x % 10)
>>> d
[0, 11, 123, 28, 9]

按第二个元素大小排序

>>> d = [[1, 2], [3, 1], [5, -1]]
>>> d.sort(key = lambda x : x[1])
>>> d
[[5, -1], [3, 1], [1, 2]]

基于比较的排序:

采用cmp_to_key()函数,可以接受两个参数,将两个参数做处理 

它在list中的工作机制就是将列表中的元素去两两比较,当cmp返回是正数时交换两元素 

等于写0,小于写-1,大于写1 

# 拼接最大数

from functools import cmp_to_key

d = [2, 30, 14, 7, 9]

def cmp(a, b):
    if str(a) + str(b) < str(b) + str(a):
        return 1 #交换
    elif str(a) + str(b) > str(b) + str(a):
        return -1 #不交换
    else:
        return 0 #二者相等
    
d.sort(key = cmp_to_key(cmp))

print(d)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值