-1

我试图理解为什么 Python 以似乎不是自记录的方式实现排序背后的逻辑。

如果我想要一个按降序排列的列表,我会执行以下操作:

[something[x] for x in sorted(something, reverse=True)]

似乎一个更加自我记录的方法是:

[something[x] for x in sorted(something, order="descending")]

如果这不是提出信息问题的正确论坛,我深表歉意。我发现 stackoverflow 是获取优质信息的最佳场所之一。如果这不是合适的地方,请随时指出我应该问这个问题的地方。

4

2 回答 2

2

我认为一个原因是这种方式不太容易出错。

从使用函数的程序员的角度来看:例如,您可以将“descending”拼写为“decending”。

从函数维护者的角度来看:您消除了从“升序”或“降序”之外的值引发额外异常的需要。When the options are only True or False, the chances of broken code decrease.

此外,还有少量的绩效奖金。布尔比较会比字符串比较快一点。

于 2013-08-13T20:05:46.173 回答
0

使用reverse=True是有意义的:key=参数 insorted()用于定义排序,并且reverse=参数指示相对于该排序,输出应该是升序还是降序- 鉴于只有两种可能性,使用布尔参数来控制是合乎逻辑的的行为sorted()。此外,通过明确说明只有两个值是可能的,如果解释器没有捕捉到错误,就不可能传递错误的值。在您建议的语法中,很容易拼错正确的参数值。

于 2013-08-13T19:57:45.750 回答