def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]请问在3.x中怎么用呢
3 回答
已采纳
清波
TA贡献165条经验 获得超90个赞
题主在 Python3.x 中写的代码如下:
def reversed_cmp(x,y): if x>y: return -1 if x<y: return 1 return 0 sorted([36, 5, 12, 9, 21], reversed_cmp) ## 报错信息如下: TypeError: must use keyword argument for key function 类型错误: 必须使用关键字参数。 ## 解释,这是什么意思呢,首先 sorted()函数 在Python2.x 和 Python3.x 中有所不同: sorted(iterable, cmp=None, key=None, reverse=False) ## Python 2.x sorted(iterable, key=None, reverse=False) ## Python 3.x ## 由此可看出, Python 3.x 取消了 cmp 参数, 所以如果想给 sorted()函数传参的话, 就剩下 key, 和reverse了, ## 其中,reverse 就是返回 正常排序的反序, 而key 的用法,我在下面 答复中的url 中有详解。 所以题主如果想在 ## Python3.x 中得到 上面代码的正确答案, 其实代码很简单: sorted([36, 5, 12, 9, 21], reverse=True)
清波
TA贡献165条经验 获得超90个赞
不粘贴了, 直接贴 url,这是我在另外一个猿问中回答的:
http://www.imooc.com/wenda/detail/314966
Python3.x 中取消了 sorted() 的 cmp 参数, 所以不要看 cmp 部分就好。
添加回答
举报
0/150
提交
取消