关于降序代码问题?
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
课程里面说如果x 排在y前面,就返回-1;如果x排在y后面,就返回1;如果x==y,就返回0。这样就能实现降序。但是为什么这样就可以实现降序排序呢?x排在y前面,为什么不能返回1呢?很疑惑。。。
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
课程里面说如果x 排在y前面,就返回-1;如果x排在y后面,就返回1;如果x==y,就返回0。这样就能实现降序。但是为什么这样就可以实现降序排序呢?x排在y前面,为什么不能返回1呢?很疑惑。。。
2019-01-23
我觉得你理解错了,你应该要明白实现降序或者升序的函数是sorted函数,而不是你自定义的revered_cmp().
而sorted函数的作用是接受一个比较函数对序列进行排列,而这个比较函数会根据返回值是-1,就会把 x 排在 y 前面,返回值是1,就会把 x 排在 y 后面,返回值为0,就把两者并排。
所以你定义的reversed_cmp(),是作为sorted()的一个参数实现降序功能,因为sorted()默认的参数为cmp,只能进行升序排列,当然题目只是为了锻炼我们自定义排序函数,实际上sorted()还有一个参数reverse,表示排序规则,reverse = True 降序 , reverse = False 升序(默认),可以方便的实现降序排列。
你可以看看http://www.runoob.com/python/python-func-sorted.html,加深理解。
举报