pin_drop当前位置:知识文库 ❯ 图文
Python列表sort方法
概述
sort() 方法用于对列表进行原地排序,默认按升序排列。它支持通过 key 参数自定义排序规则,通过 reverse 参数控制升序或降序。sort() 是 Python 中最灵活、最强大的排序工具之一。
语法
代码示例
list.sort(key=None, reverse=False)返回值:None(原地修改列表)
基本用法
升序排序
代码示例
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()
print(nums)输出:
代码示例
[1, 1, 2, 3, 4, 5, 6, 9]降序排序
代码示例
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort(reverse=True)
print(nums)输出:
代码示例
[9, 6, 5, 4, 3, 2, 1, 1]字符串排序
代码示例
fruits = ["banana", "apple", "cherry", "date"]
fruits.sort()
print(fruits)输出:
代码示例
['apple', 'banana', 'cherry', 'date']key 参数
key 参数接受一个函数,该函数作用于每个元素,排序依据是函数的返回值。
按字符串长度排序
代码示例
words = ["banana", "pie", "Washington", "book"]
words.sort(key=len)
print(words)输出:
代码示例
['pie', 'book', 'banana', 'Washington']按绝对值排序
代码示例
nums = [-5, 3, -1, 4, -2]
nums.sort(key=abs)
print(nums)输出:
代码示例
[-1, -2, 3, 4, -5]按元组的某个元素排序
代码示例
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
students.sort(key=lambda x: x[1])
print(students)输出:
代码示例
[('Charlie', 78), ('Alice', 85), ('Bob', 92)]按字典的某个键排序
代码示例
people = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
people.sort(key=lambda x: x["age"])
print(people)输出:
代码示例
[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]sort 与 sorted 对比
代码示例
a = [3, 1, 2]
b = [3, 1, 2]
a.sort()
c = sorted(b)
print("sort后a:", a)
print("sorted后b:", b)
print("sorted返回c:", c)输出:
代码示例
sort后a: [1, 2, 3]
sorted后b: [3, 1, 2]
sorted返回c: [1, 2, 3]常见应用场景
多条件排序
代码示例
students = [
("Alice", 85, 20),
("Bob", 85, 18),
("Charlie", 92, 19)
]
students.sort(key=lambda x: (-x[1], x[2]))
print(students)输出:
代码示例
[('Charlie', 92, 19), ('Alice', 85, 20), ('Bob', 85, 18)]不区分大小写排序
代码示例
words = ["banana", "Apple", "cherry", "Banana"]
words.sort(key=str.lower)
print(words)输出:
代码示例
['Apple', 'banana', 'Banana', 'cherry']注意事项
注意:原地修改:
sort()返回None,不要写成list = list.sort()。如果需要保留原列表,使用sorted()。
注意:类型一致性:列表中的元素必须是可比较的,不同类型混排会报错(如 int 和 str)。
注意:排序稳定性:Python 的排序是稳定排序,相等元素的相对顺序保持不变。
小结
sort():原地排序,返回
None;sorted()返回新列表key 参数:自定义排序规则,
reverse=True降序排列排序稳定性:相等元素的相对顺序不变
保留原列表:需要保留原列表时使用
sorted()函数
练习题
练习1
练习1
给定列表 words = ["Hello", "world", "Python", "is", "awesome"],按字符串长度从长到短排序,打印结果。
练习2
练习2
给定学生列表 students = [{"name": "Alice", "score": 85}, {"name": "Bob", "score": 92}, {"name": "Charlie", "score": 85}],先按分数降序排列,分数相同时按姓名升序排列。
常见问题
sort() 和 sorted() 有什么区别?
sort() 是列表的方法,会原地修改原列表并返回 None;sorted() 是内置函数,适用于任何可迭代对象,返回一个新列表而不改变原对象。需要保留原列表时应使用 sorted()。
key 参数的作用是什么?如何使用?
key 参数接受一个函数,该函数作用于每个元素,排序依据是函数的返回值。例如 key=len 按长度排序,key=str.lower 按小写形式排序,key=lambda x: x[1] 按元组第二个元素排序。
Python 的排序是稳定的吗?
是的,Python 的排序算法(Timsort)是稳定排序,这意味着相等元素的相对顺序在排序后保持不变。这个特性在多条件排序时非常有用。
本文涉及AI创作
内容由AI创作,请仔细甄别