Python3 list.sort() 使用自定义的比较函数
- 首先,
import functools
- 然后定义一个比较函数,可以随便起个名字,比如
def compare(A, B)
,要注意函数参数一定是两个,这两个参数分别表示被比较的变量 - 在自定义的比较函数内部写条件语句,比如:
- 满足条件1时,
return 正数
表示该条件下A < B
, 即在排序后的队列中将A
放在B
的左侧 - 满足条件2时,
return 负数
表示该条件下A > B
, 即在排序后的队列中将A
放在B
的右侧 - 满足条件3时,
return 0
表示该条件下A
和B
”相等, 排序队列中两者顺序和排序前一样
- 满足条件1时,
- 最后在使用
list.sort()
的时候写成list.sort(key=functools.cmp_to_key(compare))
就会使用你定义的比较函数来作比较啦
示意代码如下:
import functools
def compare(A, B): # 名字可以随便取,不一定得是“compare"
if ....
return -1 # 表示此种情况下A排在B左边,其实只要return negative value就行
elif...
return 1 # 表示此种情况下A排在B右边,其实只要return positive value就行
else...
return 0 # 表示相等,就按照循环访问的顺序排
list points = ...
points.sort(key=functools.cmp_to_key(compare))