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

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

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

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

2019-08-01 源自:python进阶 4-3 247 浏览 3 回答

最佳回答

2019-08-04

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)


weixin_慕粉0189013 (提问者)

哦哦谢谢

#1 2019-08-05 回复

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

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

这样写就不蒙了

2019-08-01
回复 1

慕仔_Ram

不行啊,L2 = sorted(L1,lambda x, y: cmp(x.name, y.name))和L2 = sorted(L1,lambda p1,p2: cmp(x.name, y.name))输出的不一样。改成了x,y会报错,输出顺序错了

#1 2019-11-04 回复

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

2019-09-06
回复 0

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信