Python列表排序

目录

Python 列表内置 list.sort() 方法实现原地排序,同时 Python 还提供 sorted() 函数返回对可迭代对象排序后的新列表。 下面介绍目前我对排序的使用。

指定排序方式

list.sort()sorted() 都有一个参数 key,指定一个函数,比较前,会在每个元素上会调用该函数。
可以使用语言自带的函数,例如 str.lower

sorted("This is a test string from Andrew".split(), key=str.lower)

可以使用 lambda 函数,例如针对某个特定的属性排序:

sorted(student_tuples, key=lambda student: student.name)

还可以使用自定义的函数,该函数以序列中的单个元素作为参数。

def sort_function(item):
    return item.value

sorted(array, key=sort_function)

多重排序

key 只支持单个键排序,如果需要多重排序,则可以将多条件组成 tuple,再传给 key。 可以使用 operator.attrgetter 获取多个属性值。

sorted(student_objects, key=attrgetter('grade', 'age'))

参考

Sorting HOW TO》,关于列表排序的官方文档