您的位置:首页 > 编程语言 > Python开发

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

2017-02-23 11:01 399 查看
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))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python