python中sort()方法自定义cmp PythonTip-最大正整数
2017-02-23 11:01
399 查看
cmp内建函数
重定义比较函数
题目如下:
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=[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))
相关文章推荐
- 用sort()方法对数组的元素进行排序(可按字母升序降序与获得最大最小值)
- 自定义安装 Python 后,出现方向键无法用,按下方向键后,终端显示的式相应的字符编码,而不是方向键的功能的解决方法
- python Json的一点收获,自定义序列化方法
- java Collections.sort()实现List排序的默认方法和自定义方法
- Python最大堆排序实现方法
- 自定义一个方法,然后找出里面最大数!
- python中List的sort方法
- python中List的sort方法(或者sorted内建函数)的用法
- C# List.Sort()自定义比较方法排序
- python中sort方法
- Python的内建sort方法
- JavaScript数组的自定义 sort方法
- Python自定义模块导入方法
- python中List的sort方法(或者sorted内建函数)的用法
- 自定义sort排序方法
- 自定义List的sort方法比较器
- Python自定义模块导入方法
- Collections.sort自定义排序的使用方法
- python中List的sort方法(或者sorted内建函数)的用法
- python学习九:SocektServer学习、bisect、list的sort详解、清空字典的两种方法、zip初探