我正在尝试对元组列表进行排序。

tuples.sort(key=lambda tup: tup[-1])


我正在调用函数

def sort_last(tuples):


喜欢

sort_last([(1, 3), (3, 2), (2, 1)])


要么

sort_last([(2, 3), (1, 2), (3, 1)])


但是return tuples总是给我NONE
我究竟做错了什么 ?

最佳答案

>>> def sort_last(tuples=None):
...     tuples.sort(key=lambda tup: tup[-1])
...     return tuples

>>> sort_last([(2, 1), (3, 2), (1, 3)])
[(2, 1), (3, 2), (1, 3)]

sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1


因此,List排序方法返回None并对original List本身进行排序。

您可以使用sorted方法,该方法返回排序后的新列表,而没有changing原始列表。

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

>>> def sort_last(tuples):
...     return sorted(tuples, key=lambda tup: tup[-1])
...
>>> sort_last([(2, 1), (3, 2), (1, 3)])
[(2, 1), (3, 2), (1, 3)]

关于python - 使用用户定义的键返回无排序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27185401/

10-10 17:55