python实现sorted函数_Python自定义sorted排序实现方法详解

本文介绍了如何在Python中实现自定义排序规则,特别是在Python3中sorted函数不再接受cmp参数的情况下,利用functools.cmp_to_key将自定义比较函数转换为key,以解决数组数字拼接后排序的问题。通过示例展示了如何定义比较函数并应用于sorted函数,从而找到数字拼接后的最小值。
摘要由CSDN通过智能技术生成

题目

输入一个正整数数组,把数组里面的所有属猪拼接起来成为一个数打印能拼接起来的所有数字中最大/最小的那个。

思考

直观想法就是求出这个数组中所有数字的全排列,然后拼接起来,再比较大小即可,当然复杂度过高。

另一个想法,我们可以定义一个排序规则,如下:

如果两个数m,n能拼接成数字mn,nm,如果mn>nm,则m应该在n前面,反之亦然

根据这个排序规则,我们可以重新排列数组,将排列好的数组拼接起来输出即可'为了方便比较,并且防止数据溢出(比如c语言),采用字符串的方式拼接。我们很容易可以写出如下代码:

def compare(strnum1, strnum2):

newstrnum1 = strnum1 + strnum2

newstrnum2 = strnum2 + strnum1

if newstrnum2 > newstrnum1:

return -1

elif newstrnum2 == newstrnum1:

return 0

else:

return 1

问题

排序规则定义好了,但是问题来了,一般的 sorted 排序函数 都有相应的 cmp函数,用来定制化排序的比较方法。但是python3的sorted函数已经删去了cmp参数,真不能跑去用python2吧

解决方案

由于python3中sorted函数除去compare函数,无法自定义排序规则,所以使用内置的函数&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值