【发布时间】:2010-08-04 16:00:44
【问题描述】:
我经常在 Python 中使用 lambda 表达式进行排序,虽然它工作得很好,但我发现它的可读性不太好,希望有更好的方法。这是我的一个典型用例。
我有一个数字列表,例如,x = [12, 101, 4, 56, ...]
我有一个单独的索引列表:y = range(len(x))
我想根据x 中的值对y 进行排序,我这样做:
y.sort(key=lambda a: x[a])
有没有不使用 lambda 的好方法?
【问题讨论】:
-
原始值的排序列表不够用的任何特殊原因?
x_sorted = sorted(x) -
OP希望元素的索引按排序顺序,而不是元素本身。
-
很遗憾
lambda是一个又长又丑的关键字。这几乎就是这样做的方法。 -
看起来与stackoverflow.com/questions/3382352/… 非常相似,我在其中回答了“排名顺序列表”解决方案,不幸的是使用 lambda。对我来说,我更喜欢它而不是 itemgetter 解决方案。