Как проверить, отсортирован ли список (в любом порядке) в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, отсортирован ли список в Python, вне зависимости от того, в порядке возрастания или убывания он отсортирован. Вы изучите основы отсортированных списков и то, как они используются в различных программировании задач.

В рамках практического занятия (лабораторной работы) вас будут сопровождать по созданию и манипулированию списками с использованием встроенных функций Python. Вы научитесь использовать функцию sorted() для создания новых отсортированных списков из существующих, как в порядке возрастания, так и убывания. Также в практическом занятии (лабораторной работе) показано, как сортировать списки строк.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) 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)

Сохраните приведенный выше код в файле с именем sort_list.py в директории ~/project. Вы можете использовать редактор 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']

Строки сортируются в алфавитном порядке.

Проверка на возрастание или убывание

На этом этапе вы научитесь проверять, отсортирован ли список в порядке возрастания или убывания. Это распространенная задача во многих сценариях программирования, таких как валидация данных и проектирование алгоритмов.

Чтобы определить, отсортирован ли список, вы можете пройти по списку и сравнить соседние элементы. Если каждый элемент меньше или равен следующему элементу, то список отсортирован в порядке возрастания. Если каждый элемент больше или равен следующему элементу, то список отсортирован в порядке убывания.

Начнем с создания Python-скрипта с именем check_order.py в директории ~/project с использованием редактора VS Code.

Вот код для проверки, отсортирован ли список в порядке возрастания:

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() можно использовать для сортировки обоих списков перед их сравнением. Это гарантирует, что порядок элементов не повлияет на результат сравнения.

Создадим Python-скрипт с именем compare_lists.py в директории ~/project с использованием редактора VS Code.

Вот код для сравнения двух списков с использованием функции 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_a и list_b содержат одинаковые элементы, поэтому функция возвращает True. Списки list_c и list_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() можно применять к спискам строк, хотя в предоставленном содержании демонстрация этого была прервана.