Sorting 将带有lambda函数的排序移植到Python 3
我正在将代码从Python2.7移植到Python3。2to3无法转换以下行,似乎无法理解。感谢您的帮助Sorting 将带有lambda函数的排序移植到Python 3,sorting,python-3.x,lambda,Sorting,Python 3.x,Lambda,我正在将代码从Python2.7移植到Python3。2to3无法转换以下行,似乎无法理解。感谢您的帮助 subpaths.sort( lambda x, y : int(pyx.unit.tocm(x.arclen() - y.arclen()) / math.fabs(pyx.unit.tocm(x.arclen() - y.arclen()))) ) 列表的方法需要一个键,这是一个只包含一个参数的函数。您需要将lambda函数转换为单参数函
subpaths.sort(
lambda x, y :
int(pyx.unit.tocm(x.arclen() - y.arclen()) /
math.fabs(pyx.unit.tocm(x.arclen() - y.arclen()))) )
列表
的方法需要一个键
,这是一个只包含一个参数的函数。您需要将lambda函数转换为单参数函数。有一个快捷方式可以实现由提供的快捷方式。因此,您可能需要的是:
import functools
subpaths.sort(key=functools.cmp_to_key(lambda x, y: ...))
请注意,如果我正确理解您的代码,您只需使用以下键对列表进行排序:
subpaths.sort(key=lambda x: pyx.unit.tocm(x.arclen()))
列表
的方法需要一个键
,这是一个只包含一个参数的函数。您需要将lambda函数转换为单参数函数。有一个快捷方式可以实现由提供的快捷方式。因此,您可能需要的是:
import functools
subpaths.sort(key=functools.cmp_to_key(lambda x, y: ...))
请注意,如果我正确理解您的代码,您只需使用以下键对列表进行排序:
subpaths.sort(key=lambda x: pyx.unit.tocm(x.arclen()))
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。如果不知道
子路径
是什么以及x
和y
是什么,就不可能回答此问题。但问题已得到回答…寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。如果不知道子路径
是什么,以及x
和y
是什么,就不可能回答这个问题。然而,答案已经给出……这个解决方案肯定是最快实现的。但是,如果OP有时间的话,IMO应该考虑从头开始写代码< > CMP < /代码> LAMBDA,以提高代码的效率和可读性,这个解决方案是最快实现的。但是,如果OP有时间的话,IMO应该考虑从头写代码<代码> >密钥< /代码> LAMBDA来替换<代码> CMP < /代码> lambda,以提高效率和可读性。