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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hduxiejun/article/details/56666859

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))

猜你喜欢

转载自blog.csdn.net/hduxiejun/article/details/56666859
今日推荐