如有一个包含名字的数组(Python中叫列表)
names = ["Mary", "Mamao", "Wall", "Aron", "Matz", "Larry"]
我想按照名字的长短来排序:
#在Ruby中,可以这样:
names.sort_by { |x| x.length } #基于Schwartz变换(Python中叫DSU)
#输出结果为:(注意:Ruby采用的是不稳定排序)
["Mary", "Matz", "Wall", "Aron", "Mamao", "Larry"]

#Python中,可以这样:
sorted(names, key=lambda x: len(x)) # 用基于DSU的sorted(),而不是side effect的sort()
#输出结果为(Python采用的是稳定排序):
['Mary', 'Wall', 'Aron', 'Matz', 'Mamao', 'Larry']
现在我想让他再加一条规则,先根据长度排序,再按字母顺序排列。
#Ruby
names = names.sort_by { |x| [x.length, x] }

#Python
names = sorted(names, key=lambda x: [len(x), x])

#现在names的值为:
["Aron", "Mary", "Matz", "Wall", "Larry", "Mamao"]