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

Day40:列表的排序

在 Python 中,排序是处理列表数据时常用的一种操作。排序可以帮助我们按照一定的规则(如升序或降序)对列表中的元素进行排列。Python 提供了内置的排序方法 sort()sorted() 来实现这一功能。


1. 使用 sort() 方法排序

1.1 sort() 方法简介

sort() 是列表对象的一个方法,它会修改原列表,并将列表中的元素按照指定的顺序排序。默认情况下,sort() 会将列表中的元素按升序排列(对于数字来说是从小到大,对于字符串来说是字母顺序)。

1.2 排序的基本用法

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort()  # 默认升序排列
print(numbers)

输出结果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例子中,numbers.sort() 将列表中的元素按升序排序。

1.3 降序排序

如果需要按降序排列列表中的元素,可以通过设置 reverse=True 参数来实现。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort(reverse=True)  # 降序排列
print(numbers)

输出结果:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

在这个例子中,numbers.sort(reverse=True) 将列表中的元素按降序排序。


2. 使用 sorted() 函数排序

2.1 sorted() 函数简介

sort() 方法不同,sorted() 函数会返回一个新的已排序列表,而不会修改原列表。sorted() 函数也可以接受一个可选参数 reverse,用于指定排序的顺序。

2.2 排序的基本用法

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)  # 默认升序排列
print(sorted_numbers)

输出结果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例子中,sorted(numbers) 返回了一个新的已排序列表,原列表 numbers 没有被修改。

2.3 降序排序

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers, reverse=True)  # 降序排列
print(sorted_numbers)

输出结果:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

在这个例子中,sorted(numbers, reverse=True) 返回了一个按降序排列的新列表。


3. 排序的其他参数

3.1 key 参数

除了 reverse 参数,sort()sorted() 还可以接受一个 key 参数。key 是一个函数,它用于指定排序时的排序依据。每个元素都会被传递给 key 函数,key 函数返回的值将作为排序的标准。

3.2 按字符串的长度排序

words = ["banana", "apple", "cherry", "date"]
words.sort(key=len)  # 根据字符串的长度进行排序
print(words)

输出结果:

['date', 'apple', 'banana', 'cherry']

在这个例子中,key=len 表示按照每个字符串的长度来排序。len() 函数计算字符串的长度。

3.3 按自定义的排序规则

我们还可以传入一个自定义的函数作为 key,以实现复杂的排序规则。例如,按照字符串的最后一个字母进行排序:

words = ["banana", "apple", "cherry", "date"]
words.sort(key=lambda word: word[-1])  # 按照每个字符串的最后一个字母排序
print(words)

输出结果:

['banana', 'apple', 'date', 'cherry']

在这个例子中,key=lambda word: word[-1] 表示按照每个字符串的最后一个字母进行排序。


4. 对字典中的元素进行排序

如果我们有一个字典,且需要根据字典的值或键对字典进行排序,可以使用 sorted() 函数与 key 参数。

4.1 按照字典的键排序

scores = {"Alice": 88, "Bob": 75, "Charlie": 92, "David": 85}
sorted_by_key = sorted(scores.items(), key=lambda item: item[0])  # 按照键排序
print(sorted_by_key)

输出结果:

[('Alice', 88), ('Bob', 75), ('Charlie', 92), ('David', 85)]

4.2 按照字典的值排序

sorted_by_value = sorted(scores.items(), key=lambda item: item[1])  # 按照值排序
print(sorted_by_value)

输出结果:

[('Bob', 75), ('David', 85), ('Alice', 88), ('Charlie', 92)]

5. 排序的性能和注意事项

5.1 排序的时间复杂度

Python 中的排序算法采用的是 Timsort,它的时间复杂度为 O(n log n),这意味着它在大多数情况下表现得相当高效。排序操作通常比直接遍历或其他简单操作更耗时,尤其是当列表非常大时。

5.2 稳定性

Python 的排序算法是稳定的,这意味着如果两个元素在排序前相等,那么它们在排序后的顺序会保持一致。


6. 小结

在 Python 中,排序是一个非常常见的操作。通过 sort()sorted() 方法,我们可以方便地对列表进行升序或降序排序。同时,我们还可以通过 key 参数自定义排序规则,并且 Python 的排序算法非常高效且稳定。


7. 课后练习

7.1 数字排序

编写一个程序,输入一组数字并将它们按升序和降序排序。

7.2 字符串排序

编写一个程序,输入一组字符串,并按字母顺序进行排序。

7.3 自定义排序规则

编写一个程序,输入一组字符串,并按每个字符串的长度进行排序。

7.4 排序字典

编写一个程序,输入一个字典,按字典的键或值进行排序。


http://www.kler.cn/a/521169.html

相关文章:

  • set集合
  • 物业巡更系统在现代社区管理中的优势与应用探讨
  • [EAI-023] FAST: Efficient Action Tokenization for Vision-Language-Action Models
  • 《企业应用架构模式》笔记
  • C语言从入门到进阶
  • 6. 使用springboot做一个音乐播放器软件项目【1.0版项目完结】附带源码~
  • python 变量范围的定义与用法
  • 汽车网络信息安全-ISO/SAE 21434解析(中)
  • 拖拽移动(Semi Design)
  • 《一起做很甜的梦!》
  • sqlite3 学习笔记
  • 数据分箱 baggingboosting onehot独热编码 woe编码 sklearn的ensemble(集成学习)
  • python:taichi 高性能可视化 Demo 展览
  • 基于SpringBoot的母婴护理知识共享管理系统
  • 代码随想录算法【Day32】
  • Go中的Context(上下文)
  • ESP8266基于WiFiManager设置页面添加参数并且掉电不丢失
  • GIT管理指令
  • Object类(1)
  • Qt Enter和HoverEnter事件
  • 硬件学习笔记--36 TTL、RS232、RS485相关介绍
  • Linux相关概念和易错知识点(26)(命名管道、共享内存)
  • PostGIS笔记:PostgreSQL 数据库与用户 基础操作
  • 使用ensp进行ppp协议综合实验
  • API接口开发淘宝商品数据一键解析获取商品信息编写
  • Linux Ubuntu 18.04下创建桌面快捷方式