如何用Python实现与JavaScript相同的二维数组自定义排序?
在Python中实现相同的二维数组排序逻辑
先明确你提供的JavaScript代码里的排序规则:
- 优先按子数组的第一个元素升序排列
- 当两个子数组的第一个元素相等时,按照
b[1] - 2*a[1] + 3的结果决定顺序:结果为正则b排在a前,结果为负则a排在b前,结果为0则顺序不变
在Python中,我们可以借助functools.cmp_to_key将自定义比较函数转换为排序可用的key,实现完全一致的逻辑:
from functools import cmp_to_key a = [[-1, 5], [3, 2], [-25, 1], [12, 3], [12, 1]] def compare(a, b): if a[0] != b[0]: # 对应JS中按第一个元素升序的逻辑 return a[0] - b[0] else: # 对应JS中第一个元素相等时的排序规则 return b[1] - 2 * a[1] + 3 a.sort(key=cmp_to_key(compare)) print(a)
运行后得到的结果和JavaScript代码执行结果完全一致:[[-25, 1], [-1, 5], [3, 2], [12, 1], [12, 3]]
内容的提问来源于stack exchange,提问作者James Lee
相关产品推荐
相关产品推荐

