使用lambda函数将排序移植到Python 3

时间:2016-01-24 20:46:24

标签: sorting python-3.x lambda

我将代码从Python 2.7移植到3. 2to3不会转换以下行,但似乎无法弄明白。任何帮助表示赞赏。

subpaths.sort(
    lambda x, y :
        int(pyx.unit.tocm(x.arclen() - y.arclen()) /
            math.fabs(pyx.unit.tocm(x.arclen() - y.arclen()))) )

1 个答案:

答案 0 :(得分:2)

list的{​​{3}}方法需要key,这只是一个参数的函数。您需要将lambda函数转换为单个参数的函数。 sort提供了一个快捷方式。因此,您可能需要的是:

import functools
subpaths.sort(key=functools.cmp_to_key(lambda x, y: ...))

请注意如果我正确理解您的代码,您只需使用以下键对列表进行排序:

subpaths.sort(key=lambda x: pyx.unit.tocm(x.arclen()))