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

能不能给个详尽的解释?

cmp=lambda s1,s2:cmp(s1.upper(),s2.upper())


实在看不懂。

正在回答

3 回答

你可以结合前面介绍的匿名函数看,要忽略大小写 在排序,那就要把两个字符串变成都是大写或是小写 在比较,supper是转成大写,cmp是内置的比较函数

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

完整点分析这个答案或许更好理解

1、functools.partial的用法为:functools.partial(模板,默认参数),这里用的是stored的函数模板

2、可以在python内用help来查看stored的参数定义,如下:

    sorted(...)

        sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

3、用cmp参数比较大小,由于要调用cmp函数,为了代码的简化使用匿名函数lambda书写

        cmp = lambda s1,s2 :cmp(s1.upper(),s2.upper())

        可以想象成cmp(x,y),如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

        通过返回值,来判断排序,返回-1,x排在y前面


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

lambda s1,s2:cmp(s1.upper(),s2.upper())等于以下函数

def f(s1,s2):

    return cmp(s1.upper(),s2.upper())

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

举报

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

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

进入课程

能不能给个详尽的解释?

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