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

怎样实现倒序,我借鉴了前面的自定义排序函数,但一直无效?

import functools


sorted_ignore_case = functools.partial(sorted,cmp=lambda s1,s2:cmp(s1.upper(),s2.upper()))


print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

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


def reversed_cmp(x, y):

    if x > y:

        return -1

    if x < y:

        return 1

    return 0

    

print sorted([36, 5, 12, 9, 21], reversed_cmp)

sorted_ignore_case = functools.partial(sorted,reversed_cmp=lambda s1,s2:reversed_cmp(s1.upper(),s2.upper()))


print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

我借鉴了前面2-7的自定义排序函数,但一直无效?


正在回答

8 回答

reverse=False,改成这样才可以实现倒叙

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

reversed_cmp这个函数是Python函数库里面有的吗?另外,按照偏函数格式f1=functools.partial(f,x)的格式x是一个参数(固定参数或者某个函数定义参数)

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

import functools

sorted_ignore_case = functools.partial(sorted,cmp=lambda s1,s2:cmp(s1.upper(),s2.upper()), reverse=True)

print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

就能实现倒序! 谢谢


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

你在前面匿名函数使用了变量 reversed_cmp,后面定义函数又使用了变量 reversed_cmp,两个变量名冲突了。

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

import functools sorted_ignore_case = functools.partial(sorted,cmp=lambda w1, w2: -cmp(w1.upper(),w2.upper())) print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

试试这个,完美执行

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

import functools


sorted_ignore_case = functools.partial(sorted,cmp=lambda s1,s2:cmp(s1.upper(),s2.upper()))


print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

这个就可以了,funtools.partial是将sorted函数里的cmp参数固定为不按大小写的方式排序,直接利用修改之后的sorted_ignore_case即可

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

个人感觉,你把问题复杂化了。一是functools.partial的作用是,把一个函数的某些参数固定住(即设置默认值),返回一个新的函数,方便调用这个新函数。二是reversed_cmp并未sorted的参数,如果要让reversed_cmp成为sorted的参数势必需要改造sorted函数,这个跟functools.partial初衷就背道而驰了

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

因为sorted函数接受的默认参数关键字只有三个: cmp,key,reverse

上述代码可改为sorted_ignore_case = functools.partial(sorted,cmp=lambda s1,s2:reversed_cmp(s1.upper(),s2.upper()))

也可以用 sorted_ignore_case = functools.partial(sorted,reverse=True)实现倒序,但是这种方法区分大小写

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

举报

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

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

进入课程

怎样实现倒序,我借鉴了前面的自定义排序函数,但一直无效?

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