python中sort()方法自定义cmp PythonTip-最大正整数

本文介绍Python中如何自定义排序函数实现列表排序,并通过一个实例展示如何将整数列表通过特定排序规则拼接成最大可能的整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmp内建函数

>>>L=[1,3,2]
>>>L.sort()
>>>L
[1, 2, 3]
#默认就是调用cmp内建函数
>>>L.sort(cmp)
>>>L
[1, 2, 3]

重定义比较函数

def mycmp1(x,y):  #升序排列
    if x < y:
        return -1
    elif x > y:
        return 1
    else:
        return 0
def mycmp2(x,y):  #降序排列
    if x < y:
        return 1
    elif x > y:
        return -1
    else:
        return 0
L.sort(mycmp1)
print L
L.sort(mycmp2)
print L
#输入出如下:
[1, 2, 3]
[3, 2, 1]

观察规律可知,内部排序机制如下:
将list的所有数两两比较,如果返回为正,这交换a,b的位置,即b在前,a在后;否则a在前,b在后。

def mycmp1(x,y):  #升序排列
    return x-y
def mycmp2(x,y)   #降序排列
    return y-x

题目如下:
http://www.pythontip.com/coding/code_oj_case/70

设有n个正整数,将他们连接成一排,组成一个最大的多位整数.
例如:3个整数13,312,343,连成的最大整数为:34331213
又如:4个整数7,13,4,246连接成的最大整数为7424613
给你一个正整数列表L,请输出用这些正整数能够拼接成的最大整数。
如:L=[97,13,4,246],输出如下:7424613

#L=[97,13,4,246]
L.sort(lambda a,b:int(str(b)+str(a))-int(str(a)+str(b)))
print ''.join(map(str,L))
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值