Python - 排序数组
大家好,有抱负的Python程序员们!今天,我们将深入探讨Python中排序数组的奇妙世界。如果你是编程新手,也不用担心——我会通过大量的例子和解释,引导你一步步完成。在本教程结束时,你将能够像专业人士一样对数组进行排序!
Python中的数组是什么?
在我们开始排序之前,先快速了解一下Python中的数组。在Python中,我们通常会使用列表来表示数组。列表是一系列可以包含不同类型的项目的集合。例如:
fruits = ["苹果", "香蕉", "樱桃", "日期"]
numbers = [42, 8, 15, 16, 23]
使用排序算法对数组进行排序
让我们从一个基本的排序算法开始,称为冒泡排序。它不是最高效的,但对于初学者来说很容易理解。
冒泡排序
以下是冒泡排序的一个简单实现:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 示例使用
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = bubble_sort(numbers)
print("排序后的数组:", sorted_numbers)
让我们分解一下:
- 我们定义了一个名为
bubble_sort
的函数,它接受一个数组(列表)作为输入。 - 我们获取数组的长度并将其存储在
n
中。 - 我们使用两个嵌套循环来比较相邻元素。
- 如果一个元素大于下一个元素,我们就交换它们。
- 我们重复这个过程,直到整个数组被排序。
运行此代码时,你会看到:
排序后的数组: [11, 12, 22, 25, 34, 64, 90]
有趣的事实:冒泡排序之所以如此命名,是因为较小的元素会在每次迭代中“冒泡”到列表的顶部!
使用列表的sort()方法排序数组
Python列表有一个内置的 sort()
方法,使得排序变得更容易。让我们看看它是如何工作的:
# 排序数字
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort()
print("排序后的数字:", numbers)
# 排序字符串
fruits = ["香蕉", "樱桃", "苹果", "日期"]
fruits.sort()
print("排序后的水果:", fruits)
输出:
排序后的数字: [11, 12, 22, 25, 34, 64, 90]
排序后的水果: ['苹果', '香蕉', '樱桃', '日期']
sort()
方法会修改原始列表。这就像整理你的房间一样——一切都会井然有序,但仍然是你的房间!
按降序排序
你也可以通过添加 reverse=True
参数按降序排序:
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort(reverse=True)
print("排序后的数字(降序):", numbers)
输出:
排序后的数字(降序): [90, 64, 34, 25, 22, 12, 11]
使用sorted()函数排序数组
sorted()
函数是Python中用于排序的另一个强大工具。与 sort()
不同,它不会修改原始列表,而是返回一个新的已排序列表。
# 排序数字
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = sorted(numbers)
print("原始数字:", numbers)
print("排序后的数字:", sorted_numbers)
# 排序字符串
fruits = ["香蕉", "樱桃", "苹果", "日期"]
sorted_fruits = sorted(fruits)
print("原始水果:", fruits)
print("排序后的水果:", sorted_fruits)
输出:
原始数字: [64, 34, 25, 12, 22, 11, 90]
排序后的数字: [11, 12, 22, 25, 34, 64, 90]
原始水果: ['香蕉', '樱桃', '苹果', '日期']
排序后的水果: ['苹果', '香蕉', '樱桃', '日期']
将 sorted()
视为创建列表的副本并对该副本进行排序,而原始列表保持不变。这就像给你乱糟糟的房间拍张照片,然后在照片中对一切进行整理,而你的实际房间保持原样!
使用自定义键排序
sorted()
最酷的功能之一是能够使用自定义排序键。假设我们想按单词长度对单词列表进行排序:
words = ["python", "is", "awesome", "and", "fun"]
sorted_words = sorted(words, key=len)
print("按长度排序:", sorted_words)
输出:
按长度排序: ['is', 'and', 'fun', 'python', 'awesome']
在这里,我们使用 len
作为键函数。Python将此函数应用于每个项目并基于结果进行排序。
排序方法比较
让我们用一张方便的表格来总结我们学到的排序方法:
方法 | 修改原始 | 返回新列表 | 可以使用自定义键 |
---|---|---|---|
冒泡排序 | 是 | 否 | 否 |
list.sort() |
是 | 否 | 是 |
sorted() |
否 | 是 | 是 |
结论
恭喜你!你已经学会了在Python中对数组进行排序的几种方法。从实现你自己的排序算法到使用Python的内置方法,你现在有了组织数据的有力工具。
请记住,排序就像在书架上整理书籍——有很多方法可以做到这一点,最好的方法取决于你想要实现的目标。通过对不同类型的数据和排序方法进行实践,成为一个Python排序大师!
编码愉快,愿你的数组总是完美排序! ??
Credits: Image by storyset