Python-reverse =真正的逆转问题

时间:2016-11-06 16:09:04

标签: python python-3.x sorting

def last_name(str):
    return str.split()[1]

names = ["Isaac Newton", "Fred Newton", "Niels Bohr"]
print("s:", sorted(names, key=last_name))
print("s:", sorted(names, key=last_name, reverse=True))

输出:

s: ['Niels Bohr', 'Isaac Newton', 'Fred Newton']
s: ['Isaac Newton', 'Fred Newton', 'Niels Bohr']

当我使用reverse=True时,不应该是这样的:['Fred Newton','Isaac Newton', 'Niels Bohr']

1 个答案:

答案 0 :(得分:5)

Python的排序算法稳定。如果两个值具有相同的key(value)结果,则它们的相对顺序保持不变。撤消仅适用于不同的key(value)结果

由于key('Isaac Newton')key('Fred Newton')都生成'Newton',因此这两个字符串保留其原始相对顺序。 reverse=True标记仅影响'Bohr'之前或之后'Newton'的排序。

如果您需要颠倒相对顺序,请排序前进,然后反转结果列表。