【发布时间】:2015-07-15 13:28:33
【问题描述】:
我想对每个“行”大小为 2 的 2D 列表进行排序,例如
[[2,5],[2,3],[10,11]]
这些行实际上代表范围,所以它总是 [a,b] where a
我想以这种方式对其进行排序,列表的每个元素都是一个 2 列表,我将拥有(按优先级顺序): [a1, b1] 与 [a2, b2] 相比
1. If a1 < a2 do not permute
2. If a1 > a2 permute
3. If a1 == a2 then permute if (b1 - a1) > (b2 - a2)
我觉得有点愚蠢的是python不再允许比较函数。相反,它使用一个键功能。由于我的比较基于两个参数,即“a”的数值(占主导地位)和范围的长度(b - a),因此我无法使用它来制作有效的密钥。
我该如何排序?我的意思是,没有调用两次 sorted() 之类的东西,在我看来这很丑陋。
有可能吗?还是有什么我没看到的?
谢谢!
【问题讨论】:
标签: python sorting python-3.x