我知道sorted()中还有三个附加参数:cmp、key、reverse
我很清楚如何使用键和反转。Key可以对其内容项有多个子项的列表进行快速排序,并且只需将结果反转即可。例如:
>>> L1 = [('mama','1'),('papa','2'),('son','0')]
>>> L1 = sorted(L1, key = lambda x: x[1], reverse = True)
>>> L1
[('papa', '2'), ('mama', '1'), ('son', '0')]
但是到目前为止,我还没有弄清楚如何正确地使用cmp,尽管我已经阅读了官方文档。有谁能为sorted()中的cmp参数提供一个很好的用例吗?在
cmp
是用于提供自定义排序顺序的原始参数,在python2.4引入key
之前,它是唯一的参数。key
总是比cmp
更有效(甚至在python2.4之前,鼓励使用Decorate-Sort-Undecorate习惯用法;引入key
参数以简化其实现),并且在python3中完全取消了对cmp
的支持。在因此,
cmp
没有单独的用例;它只是在离开之前与key
共存一段时间。在根据Python Docs:
当你对一组元素进行排序时,你会将它们相互比较(这取决于排序算法),以找出它们将按什么顺序排序。这是
cmp
开始行动的地方。在cmp
参数接受一个接受两个参数的函数作为参数。函数将返回第一项是否大于、小于或等于第二项。在但使用这种方法效率很低,因为每次比较都必须调用它。在
引用Python - Sorting wiki
注意:在Python2.7中,我们有一个名为^{} 的函数,可用于将
cmp
函数转换为key
函数。在相关问题 更多 >
编程相关推荐