如何在 Python 中检查列表是否已排序(任意顺序)

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Python 中检查一个列表是否已排序,无论它是按升序还是降序排列。你将探索已排序列表的基础知识,以及它们在各种编程任务中的应用。

本实验将指导你使用 Python 的内置函数创建和操作列表。你将学习如何使用 sorted() 函数从现有列表创建新的已排序列表,包括升序和降序。本实验还将演示如何对字符串列表进行排序。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/conditional_statements -.-> lab-559535{{"如何在 Python 中检查列表是否已排序(任意顺序)"}} python/for_loops -.-> lab-559535{{"如何在 Python 中检查列表是否已排序(任意顺序)"}} python/lists -.-> lab-559535{{"如何在 Python 中检查列表是否已排序(任意顺序)"}} python/build_in_functions -.-> lab-559535{{"如何在 Python 中检查列表是否已排序(任意顺序)"}} python/data_collections -.-> lab-559535{{"如何在 Python 中检查列表是否已排序(任意顺序)"}} end

探索已排序列表

在这一步中,你将学习 Python 中的已排序列表。已排序列表在编程中对于搜索、数据分析和算法优化等任务至关重要。Python 提供了内置函数和方法来轻松创建和操作已排序列表。

首先,让我们创建一个简单的数字列表:

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]
print(numbers)

将上述代码保存到 ~/project 目录下一个名为 sort_list.py 的文件中。你可以使用 VS Code 编辑器来创建这个文件。

现在,在终端中使用以下命令运行脚本:

python ~/project/sort_list.py

你应该会看到打印出的原始列表:

[5, 1, 4, 2, 8]

要对这个列表进行排序,你可以使用 sorted() 函数。sorted() 函数会根据可迭代对象中的元素返回一个新的已排序列表。

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list using the sorted() function
sorted_numbers = sorted(numbers)

## Print the sorted list
print(sorted_numbers)

修改你的 sort_list.py 文件,加入上述代码。然后,再次运行脚本:

python ~/project/sort_list.py

现在,你应该会看到打印出的已排序列表:

[1, 2, 4, 5, 8]

请注意,原始的 numbers 列表保持不变。sorted() 函数会创建一个新的已排序列表。

如果你想按降序对列表进行排序,可以使用 reverse 参数:

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list in descending order
sorted_numbers = sorted(numbers, reverse=True)

## Print the sorted list
print(sorted_numbers)

修改你的 sort_list.py 文件,加入上述代码。然后,再次运行脚本:

python ~/project/sort_list.py

你应该会看到按降序排列的已排序列表:

[8, 5, 4, 2, 1]

你还可以对字符串列表进行排序:

## Create a list of strings
names = ["Alice", "Bob", "Charlie", "David"]

## Sort the list of strings
sorted_names = sorted(names)

## Print the sorted list
print(sorted_names)

修改你的 sort_list.py 文件,加入上述代码。然后,再次运行脚本:

python ~/project/sort_list.py

你应该会看到已排序的姓名列表:

['Alice', 'Bob', 'Charlie', 'David']

字符串是按字母顺序排序的。

检查升序或降序

在这一步中,你将学习如何检查一个列表是按升序还是降序排列的。这在许多编程场景中是一项常见任务,例如数据验证和算法设计。

要确定一个列表是否已排序,你可以遍历列表并比较相邻元素。如果每个元素都小于或等于下一个元素,则该列表按升序排列。如果每个元素都大于或等于下一个元素,则该列表按降序排列。

让我们首先使用 VS Code 编辑器在你的 ~/project 目录中创建一个名为 check_order.py 的 Python 脚本。

以下是用于检查列表是否按升序排列的代码:

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

将上述代码保存到 check_order.py 中。现在,使用以下命令运行脚本:

python ~/project/check_order.py

你应该会看到以下输出:

True
False

第一个列表 [1, 2, 3, 4, 5] 是按升序排列的,因此函数返回 True。第二个列表 [1, 3, 2, 4, 5] 不是按升序排列的,因此函数返回 False

现在,让我们添加代码来检查列表是否按降序排列:

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

将上述代码添加到你的 check_order.py 文件中。完整的 check_order.py 文件应该如下所示:

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

再次运行脚本:

python ~/project/check_order.py

你应该会看到以下输出:

True
False
True
False

列表 [5, 4, 3, 2, 1] 是按降序排列的,因此函数返回 True。列表 [5, 2, 3, 2, 1] 不是按降序排列的,因此函数返回 False

这个练习演示了如何使用 Python 检查列表是按升序还是降序排列的。

使用 sorted() 进行比较

在这一步中,你将学习如何使用 sorted() 函数来比较两个列表。比较列表是编程中的常见任务,特别是当你需要验证两组数据是否相同,或者一个列表是否是另一个列表的子集时。

sorted() 函数可用于在比较两个列表之前对它们进行排序。这样可以确保元素的顺序不会影响比较结果。

让我们使用 VS Code 编辑器在你的 ~/project 目录中创建一个名为 compare_lists.py 的 Python 脚本。

以下是使用 sorted() 函数比较两个列表的代码:

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

将上述代码保存到 compare_lists.py 中。现在,使用以下命令运行脚本:

python ~/project/compare_lists.py

你应该会看到以下输出:

True
False

列表 list_alist_b 包含相同的元素,因此函数返回 True。列表 list_clist_d 不包含相同的元素,因此函数返回 False

让我们再看一个使用字符串的例子:

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

将上述代码添加到你的 compare_lists.py 文件中。完整的 compare_lists.py 文件应该如下所示:

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

再次运行脚本:

python ~/project/compare_lists.py

你应该会看到以下输出:

True
False
True
False

这个例子展示了如何使用 sorted() 函数来比较字符串列表。

总结

在本次实验中,你探索了 Python 中的有序列表,并学习了如何使用 sorted() 函数从现有列表创建新的有序列表。你了解了如何使用 reverse 参数对数字列表进行升序和降序排序。

本次实验展示了使用 sorted() 时原始列表保持不变,因为它会返回一个新的有序列表。你还了解到 sorted() 可以应用于字符串列表,不过在展示这一点之前,提供的内容被截断了。