版权声明:本文为博主原创文章,未经博主允许不得转载。 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))