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

为什么执行报错了?

为什么报错了http://img2.sycdn.imooc.com/5e833c540001a62612590593.jpg

正在回答

4 回答

from functools import cmp_to_key


def cmp(x,y):
    if x>y:
        return -1
    elif x<y:
        return 1
    else:
        return 0
result = sorted([1,3,5,2,0,4,9],key=cmp_to_key(cmp))
print(result)

版本问题 python3之后取消了你这种用法,新版本的自定义排序方法如上所示

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

尔尔66 提问者

懂了,就说为啥一直不对,按你写的那样执行是没有问题 ??​
2020-04-01 回复 有任何疑惑可以回复我~
#2

慕桂英9269908

可以的,新版本的python 指定函数只能有一个参数,把函数本身当作一个参数引入就好了,果然python的编程就是函数式编程。
2020-05-29 回复 有任何疑惑可以回复我~

只接受一个参数的函数,这个cmp函数有x,y两个参数,这个课比较老了,你改成key=str.lower或者key=str.title。不要在用函数做参数

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

直接在sorted()加个reverse=True参数,可以实现降序排序

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

还是不对啊,数字排序正确梦幻成字符串就不行了啊

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

慕婉清2180903

def cmp_ignore_case(s1, s2): if s1[0].upper() > s2[0].upper(): return 1 if s1[0].upper() < s2[0].upper(): return -1 return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
2020-05-14 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么执行报错了?

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