网站首页 > 基础教程 正文
列表排序是Python编程中的基础操作,掌握各种排序方法对数据处理至关重要。下面我将介绍Python中多种列表排序的实现方式。
方法一:使用内置sorted()函数
# 对数字列表排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print("升序排序:", sorted_numbers)
# 降序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print("降序排序:", sorted_numbers_desc)
# 对字符串列表排序
fruits = ['banana', 'apple', 'orange', 'pear']
sorted_fruits = sorted(fruits)
print("按字母顺序排序:", sorted_fruits)
方法二:使用列表的sort()方法
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort() # 原地排序,不返回新列表
print("升序排序:", numbers)
fruits = ['banana', 'apple', 'orange', 'pear']
fruits.sort(reverse=True) # 降序排序
print("按字母降序排序:", fruits)
方法三:自定义排序规则
# 按字符串长度排序
words = ['Python', 'is', 'awesome', 'for', 'data', 'analysis']
words.sort(key=len) # 按长度升序
print("按长度排序:", words)
# 按元组的第二个元素排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1]) # 按字符串排序
print("按元组第二个元素排序:", pairs)
方法四:冒泡排序算法实现
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j] # 交换元素
numbers = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(numbers)
print("冒泡排序结果:", numbers)
方法五:选择排序算法实现
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
numbers = [64, 34, 25, 12, 22, 11, 90]
selection_sort(numbers)
print("选择排序结果:", numbers)
方法六:插入排序算法实现
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
numbers = [12, 11, 13, 5, 6]
insertion_sort(numbers)
print("插入排序结果:", numbers)
方法七:快速排序算法实现
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
numbers = [3, 6, 8, 10, 1, 2, 1]
sorted_numbers = quick_sort(numbers)
print("快速排序结果:", sorted_numbers)
案例扩展:多级排序
# 学生数据:姓名、年龄、成绩
students = [
('Alice', 20, 88),
('Bob', 19, 92),
('Charlie', 20, 85),
('David', 19, 95)
]
# 先按年龄升序,再按成绩降序
students.sort(key=lambda x: (x[1], -x[2]))
print("多级排序结果:")
for student in students:
print(student)
案例扩展:自定义对象排序
class Student:
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def __repr__(self):
return f"{self.name}({self.age}):{self.score}"
students = [
Student('Alice', 20, 88),
Student('Bob', 19, 92),
Student('Charlie', 20, 85),
Student('David', 19, 95)
]
# 按年龄升序,成绩降序排序
students.sort(key=lambda s: (s.age, -s.score))
print("自定义对象排序:")
for student in students:
print(student)
总结
通过这个列表排序案例,我们学习了:
- Python内置的排序函数和方法
- 常见排序算法的Python实现
- 自定义排序规则的方法
- 多级排序技巧
- 自定义对象的排序方式
排序是编程中的基础操作,掌握这些方法对数据处理非常重要。对于大数据量排序,建议使用Python内置的sorted()或sort(),它们使用Timsort算法,效率很高。
猜你喜欢
- 2025-06-15 PY函数知识点及实例代码(python函数代码大全)
- 2025-06-15 学好了Python,我们可以实现很多算法了
- 2025-06-15 Python 函数式编程的 8 大核心技巧,不允许你还不会
- 2025-06-15 Python 函数进阶的10大技巧,不允许你还不会
- 2025-06-15 python的高阶函数是什么,有哪些高阶函数
- 2025-06-15 PY基础函数、自定义函数与高级函数
- 2025-06-15 python编程中列表常见的9大问题,你知道吗?
- 2025-06-15 三种不同方式,教你详细解析python反转列表(建议收藏)
- 2025-06-15 新手必看!30 个 Python 核心函数详解,手把手教你玩转编程
- 2025-06-15 零基础入门 Python 内置函数:从基础到进阶的实用指南
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)