L=[5,10,4,2,8,7]
def compare(a,b):
return cmp(b,a)
L.sort(compare)
print (L[-2])
L.sort()
print (L[2])
当运行此代码时,为什么不抛出异常,因为在sort函数中调用的函数compare没有给出两个参数? 当代码运行时,它将输出作为,
4
5
答案 0 :(得分:1)
您没有直接调用该功能
您要将sort函数传递给将用作比较器的函数的'指针'或'引用'
如果您需要更多调试信息,请添加一行以打印所比较的内容,如下所示
L=[5,10,4,2,8,7]
def compare(a,b):
print 'comparing ',a,b
return cmp(b,a)
L.sort(compare)
您还会注意到通话次数取决于L dis-order
有几种方法可以解决排序数组的问题 其中一些是合并排序,二进制排序和其他
这是python列表对象
源代码的link答案 1 :(得分:0)
你没有在L.sort中调用compare(比较)。您只是传递对将通过sort内部调用的函数的引用。
你不需要任何其他论据。请记住,为了调用你使用()的函数,所以如果你实际调用它,你会写出L.sort(compare())