您的位置:首页 > 编程语言 > Python开发

Python排序指南——sorted()函数和.sort()方法知识点汇总

2019-10-15 18:21 621 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/PigeonKiing/article/details/102572204

内置的list.sort()方法可以直接修改列表;sorted()内置函数会从一个可迭代对象构建一个新的排序列表。

基本排序

sorted()函数

简单的升序排列,调用sorted()函数,会返回一个新的已排序列表。

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]

list.sort()方法

list.sort() 方法,它会直接修改原列表。

>>> a = [5, 2, 3, 1, 4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]

list.sort() 方法只是为列表定义的,而sorted() 函数可以接受任何可迭代对象。

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

关键(key)函数

list.sort() 和sorted() 都有一个key 形参来指定在进行比较之前要在每个列表元素上进行调用的

函数。

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

key 形参的值应该是一个函数,它接受一个参数并并返回一个用于排序的键。
这种技巧速度很快,因为对于每个输入记录只会调用一次key 函数。

一种常见的模式是使用对象的一些索引作为键对复杂对象进行排序。例如:

>>> student_tuples = [
... ('john', 'A', 15),
... ('jane', 'B', 12),
... ('dave', 'B', 10),
... ]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

升序和降序

list.sort() 和sorted() 接受布尔值的reverse 参数。这用于标记降序排序。

例如,要以反向age 顺序获取学生数据:

>>> sorted(student_tuples, key=x:x[2], reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

表示将列表按照每个数据元素的第三项进行降序排列。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: