当前位置: 首页 > news >正文

Python 列表排序:快速上手指南

在 Python 中,列表(list)是一种非常灵活的数据结构,用于存储多个元素。对列表进行排序是数据处理中的常见任务。Python 提供了多种方法来对列表进行排序,无论是简单的升序或降序,还是基于自定义规则的排序,都能轻松实现。今天,就让我们一起深入探讨如何对 Python 列表进行排序。

一、使用 sort() 方法

sort() 方法是列表对象的一个方法,用于原地排序,即直接修改原列表。

1. 升序排序

默认情况下,sort() 方法按升序排序。

示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()
print(numbers)  # 输出:[1, 1, 2, 3, 4, 5, 6, 9]

2. 降序排序

通过设置 reverse=True 参数,可以按降序排序。

示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort(reverse=True)
print(numbers)  # 输出:[9, 6, 5, 4, 3, 2, 1, 1]

3. 自定义排序

通过 key 参数,可以指定一个函数来决定排序的依据。

示例代码:
fruits = ["apple", "banana", "cherry", "date"]
fruits.sort(key=len)  # 按字符串长度排序
print(fruits)  # 输出:['date', 'apple', 'banana', 'cherry']

二、使用 sorted() 函数

sorted() 函数是一个内置函数,用于返回一个新的已排序列表,原列表保持不变。

1. 升序排序

默认情况下,sorted() 函数按升序排序。

示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 1, 2, 3, 4, 5, 6, 9]
print(numbers)  # 原列表保持不变:[3, 1, 4, 1, 5, 9, 2, 6]

2. 降序排序

通过设置 reverse=True 参数,可以按降序排序。

示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出:[9, 6, 5, 4, 3, 2, 1, 1]

3. 自定义排序

通过 key 参数,可以指定一个函数来决定排序的依据。

示例代码:
fruits = ["apple", "banana", "cherry", "date"]
sorted_fruits = sorted(fruits, key=len)  # 按字符串长度排序
print(sorted_fruits)  # 输出:['date', 'apple', 'banana', 'cherry']

三、自定义排序规则

通过 key 参数,可以实现复杂的排序规则。key 参数接受一个函数,该函数返回一个用于排序的值。

1. 按多个条件排序

可以通过返回一个元组来实现按多个条件排序。

示例代码:
data = [{"name": "Alice", "age": 25, "score": 88},{"name": "Bob", "age": 22, "score": 92},{"name": "Charlie", "age": 24, "score": 85}
]# 按年龄升序,分数降序排序
sorted_data = sorted(data, key=lambda x: (x["age"], -x["score"]))
print(sorted_data)
# 输出:
# [
#     {'name': 'Bob', 'age': 22, 'score': 92},
#     {'name': 'Charlie', 'age': 24, 'score': 85},
#     {'name': 'Alice', 'age': 25, 'score': 88}
# ]

2. 按对象属性排序

如果列表中的元素是对象,可以通过对象的属性进行排序。

示例代码:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"{self.name} ({self.age})"people = [Person("Alice", 25),Person("Bob", 22),Person("Charlie", 24)
]# 按年龄排序
sorted_people = sorted(people, key=lambda p: p.age)
print(sorted_people)  # 输出:[Bob (22), Charlie (24), Alice (25)]

四、总结

在 Python 中,对列表进行排序有多种方法,每种方法都有其独特的用途和特点。以下是关键要点:

  1. sort() 方法

    • 原地排序,直接修改原列表。
    • 支持升序和降序排序。
    • 支持自定义排序规则。
  2. sorted() 函数

    • 返回一个新的已排序列表,原列表保持不变。
    • 支持升序和降序排序。
    • 支持自定义排序规则。
  3. 自定义排序规则

    • 通过 key 参数,可以指定一个函数来决定排序的依据。
    • 可以按多个条件排序。
    • 可以按对象属性排序。

通过合理使用这些方法,你可以高效地对列表进行排序。希望这篇文章能帮助你更好地理解和使用 Python 中的列表排序功能。

http://www.dtcms.com/a/298478.html

相关文章:

  • Palindrome Reorder
  • 腾讯研究院:AI Coding引发编程范式革命
  • 微信小程序动态切换窗口主题色
  • 多智能体强化学习入门:从基础到 IPPO 算法—强化学习(20)
  • 2507C++,C++协程的发送者
  • 浅谈生成式AI语言模型的现状与展望
  • haproxy七层代理(原理)
  • SawtoothSoftware 模板注入漏洞复现(CVE-2025-34300)
  • 8.异常处理:优雅地处理错误
  • ISIS高级特性GR
  • Springboot+activiti启动时报错XMLException: Error reading XML
  • 优思学院|QC七大手法之一的检查表应如何有效使用?
  • 【unitrix】 6.15 “非零非负一“的整数类型(NonZeroNonMinusOne)特质(non_zero_non_minus_one.rs)
  • 亚马逊广告策略:如何平衡大词和长尾词的效果?
  • 倩女幽魂手游代言人杨洋携剑仙入世 仙姿临世锋芒毕露
  • docker-compose:未找到命令的检查步骤和修复
  • ABP VNext + OData:实现可查询的 REST API
  • 服务端处于 TIME_WAIT 状态的 TCP 连接,收到相同四元组的 SYN 后会发生什么?详解
  • HCIP上HCIA复习静态综合实验
  • 移动端设备能部署的llm
  • 系统日志与用户信息绑定实现日志跟踪
  • 前端基础知识Vue系列 - 27(Vue项目中如何解决跨域)
  • 从 SQL Server 到 KingbaseES V9R4C12,一次“无痛”迁移与深度兼容体验实录
  • js基础概念-1
  • 牛客NC16660 [NOIP2004]FBI树(递归 + 二叉树后序遍历)
  • electron中IPC 渲染进程与主进程通信方法解析
  • 常用设计模式系列(十二)—享元模式
  • 如何在 FastAPI 中玩转 GraphQL 和 WebSocket 的实时数据推送魔法?
  • C++中使用Essentia实现STFT/ISTFT
  • git 连接GitHub仓库