Python - 排序数组

大家好,有抱负的Python程序员们!今天,我们将深入探讨Python中排序数组的奇妙世界。如果你是编程新手,也不用担心——我会通过大量的例子和解释,引导你一步步完成。在本教程结束时,你将能够像专业人士一样对数组进行排序!

Python - Sort Arrays

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)

让我们分解一下:

  1. 我们定义了一个名为 bubble_sort 的函数,它接受一个数组(列表)作为输入。
  2. 我们获取数组的长度并将其存储在 n 中。
  3. 我们使用两个嵌套循环来比较相邻元素。
  4. 如果一个元素大于下一个元素,我们就交换它们。
  5. 我们重复这个过程,直到整个数组被排序。

运行此代码时,你会看到:

排序后的数组: [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