list.sort(*, key=None, reverse=False)的两个问题

Python list.sort()方法的两个关键问题

在python官网中,5.1. More on Lists,list.sort()是关于排序的方法。

list.sort(*, key=None, reverse=False) 中有两个问题:

  • * 是什么意思
  • key有什么作用

* 是什么意思

* 表示后面必须是关键字参数,具体见python官网4.9.3.5. Recap里有

def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):

(1) / 和* 符号是可选的。
(2) / 之前是只能传递位置参数。
(3) / 和 * 之间是传递位置参数或者关键字参数。
(4) * 之后只能是传递关键字参数。
(5) 关键字参数又叫命名参数。

key有什么作用

key参数的作用是指定一个函数,用于为每个元素生成一个排序的“依据值”。排序时,列表会根据每个元素调用key函数后的返回值进行比较,而不是直接比较原始元素本身。

通俗解释:

key的作用是告诉Python:“排序时,请用这个函数处理一下元素,然后按处理后的结果来排序”。

它不会修改列表中的实际元素,只是临时生成一个值作为排序依据。

常见应用场景和示例:

按字符串长度排序
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words)  # 输出:['date', 'apple', 'banana', 'cherry'](按长度4,5,6,6排序)
按小写字母排序(不区分大小写)
names = ["Alice", "bob", "Charlie", "dave"]
names.sort(key=str.lower)  # 全部转小写后再比较
print(names)  # 输出:['Alice', 'bob', 'Charlie', 'dave']
按元组的某个字段排序
students = [("Alice", 90), ("Bob", 85), ("Charlie", 95)]
students.sort(key=lambda x: x[1])  # 按分数排序
print(students)  # 输出:[('Bob', 85), ('Alice', 90), ('Charlie', 95)]
按字典的某个键排序
data = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 20}]
data.sort(key=lambda x: x["age"])  # 按年龄排序
print(data)  # 输出:[{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}]

对比 key 和 reverse:

key:定义排序的依据(如按长度、按字段)。
reverse:控制升序或降序(reverse=True时降序)。

组合使用示例:

words = ["apple", "banana", "cherry", "date"]
words.sort(key=len, reverse=True)  # 按长度降序
print(words)  # 输出:['banana', 'cherry', 'apple', 'date']

总结:

key的核心作用:自定义元素的排序规则,让复杂对象的排序更灵活。

key函数的要求:必须接受一个参数(列表中的元素),并返回一个可比较的值(如数字、字符串)。

典型用途:处理大小写、提取字段、计算衍生值(如绝对值、长度)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值