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

内置的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)]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值