大家好,又见面了,我是你们的朋友全栈君。
Python中自带了两个排序函数sort和sorted,用法分别为:
list.sort(cmp=None, key=None, reverse=False)
特点:对list原地排序(直接改变数组),无返回值。
参数:
sorted(iterable[, cmp[, key[, reverse]]])
特点:可以对所有可迭代的对象进行排序操作。返回的是一个新的 list,不修改原来的对象。
参数:
这里以sorted函数为例,自定义排序规则。
比如给定区间数组s = [[1,6],[2,3],[1,4],[3,5]],数组中的每个元素代表一个区间范围,希望的排序规则:根据区间起始点的大小进行排序,起始点小的排在前面,起始点如果相同,则终止点小的排在前面。
import functools
def compare(a, b):
if a[0] != b[0]:
return -1 if a[0] < b[0] else 1
else:
if a[1] < b[1]:
return -1
elif a[1] > b[1]:
return 1
else:
return 0
s = [[1,6],[2,3],[1,4],[3,5]]
s = sorted(s, key=functools.cmp_to_key(compare))
print(s) # [[1, 4], [1, 6], [2, 3], [3, 5]]
#使用sort函数也是一样的用法
# s.sort(key=functools.cmp_to_key(compare))
# print(s) # [[1, 4], [1, 6], [2, 3], [3, 5]]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149800.html原文链接:https://javaforall.cn