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

把p1.name和p2.name换成L1[0],L1[1]为什么排序的结果就不对呢

class Person(object):

    pass


p1 = Person()

p1.name = 'Bart'


p2 = Person()

p2.name = 'Adam'


p3 = Person()

p3.name = 'Lisa'


L1 = [p1, p2, p3]

L2 = sorted(L1,lambda p1,p2:cmp(L1[0],L1[1]))


print L2[0].name

print L2[1].name

print L2[2].name


正在回答

2 回答

因为cmp(L1[0],L1[1]) = 1所以你这样写等价于

L2 = sorted(L1,lambda p1,p2: 1)

而返回值固定是1相当于没有排序

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

yangguanglukou

你说cmp(L1[0],L1[1]) = 1;那cmp(p1.name, p2.name)这种表示比较结果不也是1嘛。所以为什么不能写成L2 = sorted(L1,lambda L1[0],L1[1]:cmp(L1[0].name,L1[1].name))??
2017-12-27 回复 有任何疑惑可以回复我~

lambda匿名函数的参数决定表达式中要为p1,p2

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

举报

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

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

进入课程

把p1.name和p2.name换成L1[0],L1[1]为什么排序的结果就不对呢

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