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

在比较的时候为什么不写"key="会报错!

错误如下:

Traceback (most recent call last):
 File "index.py", line 2, in
   print sorted(L,lambda x:x)
TypeError: () takes exactly 1 argument (2 given)

正在回答

2 回答

sorted() 包含三个默认参数,iterable,cmp,key

sorted(iterable[,cmp,[,key[,reverse=True]]])

1.cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素)

2.key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None


在这道题中,L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name)),

匿名函数有两个参数 p1,p2,所以是cmp函数,

你可以改为L2 = sorted(L1, cmp=lambda p1, p2: cmp(p1.name, p2.name))

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

Sir_Y

抱歉,我没仔细看你的问题,我的回答有误,请忽略。
2018-05-24 回复 有任何疑惑可以回复我~

lambda x:x只是一个表达式而已。

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

举报

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

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

进入课程

在比较的时候为什么不写"key="会报错!

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号