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》,关于列表排序的官方文档