为什么最后提示错误呢?

虽然3.x中没有了cmp()函数,是不是可以自定义,然后再把它作为参数提供给sort,进行排序,但是最后提示错误。
一、代码如下:
# -*- coding:utf-8 -*-
numbers=[2,4,9,45,21,1,4,7,]
def cmp(x,y):
if x>y:
return 1
elif x==y:
return 0
else:
return -1
print(cmp(42,79))
numbers.sort(cmp)
print(numbers)
二、错误提示如下: numbers.sort(cmp)
TypeError: must use keyword argument for key function
PS:经测试,print(cmp(42,79))可以正常返回数值,说明自定义cmp()函数没有问题。
新手无知,求指教!

海绵宝宝撒
浏览 62回答 1
1回答

阿晨1998

numbers.sort这种用法是错误的,如果你想要排序,则用如下语句:num_sort=sorted(numbers,key=None,reverse=False)新的list num_sort才是一个排序后的列表。然后,你自定义的cmp过程只能对比两个数字,而能对比列表中的各个元素,python3解释器不知道你要做什么,所以才会出错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python