为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现倒序的?

那个为什么通过传入比较函数,就能使sorted()函数实现倒序排序?

正在回答

3 回答

self.num>s.num return -1和self.num<s.num return -1输出的顺序是反的,你可以测试一下

0 回复 有任何疑惑可以回复我~
#1

慕丝5368350 提问者

大神,那个self和s分别是什么啊
2017-10-06 回复 有任何疑惑可以回复我~
#2

慕丝5368350 提问者

我用的Python3会出错,应该是版本问题
2017-10-06 回复 有任何疑惑可以回复我~
#3

差不多菇凉ing 回复 慕丝5368350 提问者

我只是举个例子,你看看这个程序应该就明白了 def __cmp__(self, s): if self.score<s.score: return 1 elif self.score>s.score: return -1 else: return cmp(self.name,s.name) L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)] print sorted(L)
2017-10-06 回复 有任何疑惑可以回复我~
#4

差不多菇凉ing 回复 慕丝5368350 提问者

你可以看看慕课python进阶6-3
2017-10-06 回复 有任何疑惑可以回复我~
#5

差不多菇凉ing 回复 慕丝5368350 提问者

你可以看看慕课python进阶6-3
2017-10-06 回复 有任何疑惑可以回复我~
#6

慕丝5368350 提问者

好的,非常感谢您花时间解决我的问题
2017-10-06 回复 有任何疑惑可以回复我~
查看3条回复

def cmp_ignore_case(s1, s2):

    if s1.upper() > s2.upper():

        return 1

    if s1.upper() < s2.upper():

        return -1


print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

也就是说这是sorted函数本身定义就允许这样的操作,没有比较函数的时候就是默认从大到小排序,有比较函数,以比较函数为准的。

0 回复 有任何疑惑可以回复我~
#1

慕丝5368350 提问者

谢谢,get√
2017-10-06 回复 有任何疑惑可以回复我~
#2

慕圣2386694

请问不是默认从小到大吗
2018-01-21 回复 有任何疑惑可以回复我~

cmp函数在实现时会进行比较,返回的-1,1其实就决定了输出的顺序

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

如何实现倒序的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信