如何在python中对sort函数进行cmp参数工作

时间:2017-05-09 07:25:32

标签: python

你能解释一下这个python代码吗? Here how does L.sort(有趣)`work?

def fun(a, b):
    return cmp(a[1], b[1])

L= [[2, 1], [4, 5, 3]]
L.sort(fun)
print L

1 个答案:

答案 0 :(得分:0)

来自官方文件:

The sort() method takes optional arguments for controlling the comparisons.

cmp specifies a custom comparison function of two arguments (list items) 
which should return a negative, zero or positive number depending on whether 
the first argument is considered smaller than, equal to, or larger than the
second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()). 
The default value is None.

所以你试图用你自己的功能控制比较"有趣"。比如说比较列表中列表的第一个索引(嵌套列表)中的值。 如果你试图单独测试它,你会得到-1,因为a [1]小于b [1]
显然,因此输出是" [[2,1],[4,5,3]]"已经分类

a = [2,1]
b = [4,5,3]
cmp(a[1], b[1])

您可以尝试在第一个索引处更改值,就像这样,您将了解它是如何工作的。

像这样的东西

def fun(a,b):
    return cmp(a[1], b[1])
L=[[2,6],[4,5,3]]
L.sort(fun)
print L

我希望这会有所帮助。