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

可能是低级问题,不过真心小白不懂

L1 = [p1, p2, p3]
L2 = sorted(L1,lambda p1, p2: cmp(p1.name, p2.name))

这里为什么只有p1, p2就可以正常运行了,不需要p3为什么

正在回答

4 回答

L2 = sorted(L1,lambda p1, p2: cmp(p1.name, p2.name))中的p1和p2并不是指的上面的实例p1和p2

lambda p1, p2: cmp(p1.name, p2.name)

相当于一个函数,函数中的p1和p2就是函数的参数,拿出来可能会比较好理解

L2 = sorted(L1,lambda p1, p2: cmp(p1.name, p2.name))

def sort_name(p1, p2):
    if p1.name > p2.name:
        return 1
    else:
        return -1
        
L2 = sorted(L1, sort_name)


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

weixin_慕粉0189013 提问者

哦哦谢谢
2019-08-05 回复 有任何疑惑可以回复我~

老師好厲害,逃不過您的法眼~~祖國的慕課網太棒了~所以每天都來學習

eqounaztbmilukpszkd

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

lambda 匿名函数中的P1,P2 只是一个形参,不是上面的实例名P1 P2

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

L2里面的p1和p2只是参数,不是指的L1里面的同名元素。。

L2 = sorted(L1,lambda x, y: cmp(x.name, y.name))

这样写就不蒙了

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

sudoRam

不行啊,L2 = sorted(L1,lambda x, y: cmp(x.name, y.name))和L2 = sorted(L1,lambda p1,p2: cmp(x.name, y.name))输出的不一样。改成了x,y会报错,输出顺序错了
2019-11-04 回复 有任何疑惑可以回复我~
#2

lllOrz 回复 sudoRam

后面参数改成p1,p2了可是你后面比较的还是x.name,y.name
2020-02-20 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

可能是低级问题,不过真心小白不懂

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