Как проверить, отсортирован ли набор (set), преобразованный в список (list) в Python

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

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

Введение

В этом лабораторном занятии (LabEx) вы научитесь определять, будет ли список отсортированным, если преобразовать множество (set) в список (list) на Python. В рамках лабораторной работы исследуется преобразование списков в множества для удаления дубликатов, а также показано, как преобразовать множество обратно в список с использованием функции list().

Затем вы узнаете, как проверить, отсортирован ли полученный список, сравнив его с отсортированной версией самого себя. Это включает создание скриптов на Python для преобразования списков в множества, вывода полученных множеств, преобразования множеств обратно в списки и, наконец, реализации метода для проверки, отсортирован ли список.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/sets("Sets") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/lists -.-> lab-559565{{"Как проверить, отсортирован ли набор (set), преобразованный в список (list) в Python"}} python/sets -.-> lab-559565{{"Как проверить, отсортирован ли набор (set), преобразованный в список (list) в Python"}} python/build_in_functions -.-> lab-559565{{"Как проверить, отсортирован ли набор (set), преобразованный в список (list) в Python"}} python/data_collections -.-> lab-559565{{"Как проверить, отсортирован ли набор (set), преобразованный в список (list) в Python"}} end

Исследование преобразования в множество

На этом этапе вы научитесь преобразовывать список (list) в множество (set) на Python. Множества представляют собой неупорядоченные коллекции уникальных элементов. Это означает, что множество не может содержать дубликаты значений. Преобразование списка в множество - это полезный способ удалить дубликаты элементов из списка.

Сначала создадим файл Python с именем convert_to_set.py в каталоге ~/project с помощью редактора VS Code.

## Create a list with duplicate elements
my_list = [1, 2, 2, 3, 4, 4, 5]

## Convert the list to a set
my_set = set(my_list)

## Print the set
print(my_set)

Теперь запустим скрипт Python. Откройте терминал и перейдите в каталог ~/project:

cd ~/project

Затем выполните скрипт с помощью команды python:

python convert_to_set.py

Вы должны увидеть следующий вывод:

{1, 2, 3, 4, 5}

Как вы можете видеть, дубликаты элементов были удалены, и множество содержит только уникальные значения.

Попробуем другой пример со строками:

## Create a list of strings with duplicates
string_list = ["apple", "banana", "apple", "orange", "banana"]

## Convert the list to a set
string_set = set(string_list)

## Print the set
print(string_set)

Сохраните изменения в файле convert_to_set.py и запустите скрипт снова:

python convert_to_set.py

Вывод будет следующим:

{'orange', 'banana', 'apple'}

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

Преобразование в список и проверка сортировки

На этом этапе вы научитесь преобразовывать множество (set) обратно в список (list) и затем проверять, отсортирован ли этот список. Это включает использование функции list() для преобразования множества и последующее сравнение отсортированного списка с исходным.

Продолжим использовать файл convert_to_set.py в каталоге ~/project. Добавим код для преобразования множества обратно в список и его сортировки.

## Create a list with duplicate elements
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

## Convert the list to a set to remove duplicates
my_set = set(my_list)

## Convert the set back to a list
my_list_from_set = list(my_set)

## Print the list obtained from the set
print("List from set:", my_list_from_set)

## Sort the list
my_list_from_set.sort()

## Print the sorted list
print("Sorted list:", my_list_from_set)

Теперь запустим скрипт Python. Откройте терминал и перейдите в каталог ~/project:

cd ~/project

Затем выполните скрипт с помощью команды python:

python convert_to_set.py

Вы должны увидеть вывод, похожий на следующий:

List from set: [1, 2, 3, 4, 5, 6, 9]
Sorted list: [1, 2, 3, 4, 5, 6, 9]

Первая строка показывает список, созданный из множества, который содержит уникальные элементы, но может не быть в исходном порядке. Вторая строка показывает отсортированный список.

Теперь добавим проверку, отсортирован ли исходный список (с удаленными дубликатами и преобразованный в список).

## Create a list with duplicate elements
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

## Convert the list to a set to remove duplicates
my_set = set(my_list)

## Convert the set back to a list
my_list_from_set = list(my_set)

## Sort the list
sorted_list = sorted(my_list_from_set)

## Check if the list is sorted
if my_list_from_set == sorted_list:
    print("The list is already sorted.")
else:
    print("The list is not sorted.")

## Print the sorted list
print("Sorted list:", sorted_list)

Запустите скрипт снова:

python convert_to_set.py

Вы должны увидеть вывод, похожий на следующий:

The list is not sorted.
Sorted list: [1, 2, 3, 4, 5, 6, 9]

Это показывает, что список, полученный из множества, изначально не был отсортирован, и функция sorted() была использована для создания отсортированной версии.

Использование функции sorted() для сравнения

На этом этапе вы научитесь использовать функцию sorted() для сравнения без изменения исходного списка. Функция sorted() возвращает новый отсортированный список из итерируемого объекта, в то время как метод .sort() сортирует список на месте. Это полезно, когда вы хотите сохранить исходный список в исходном виде.

Продолжим использовать файл convert_to_set.py в каталоге ~/project. Изменим код, чтобы использовать функцию sorted() и сравнить ее результат с исходным списком.

## Create a list with duplicate elements
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

## Convert the list to a set to remove duplicates
my_set = set(my_list)

## Convert the set back to a list
my_list_from_set = list(my_set)

## Use sorted() to get a new sorted list
sorted_list = sorted(my_list_from_set)

## Print the original list from set
print("Original list from set:", my_list_from_set)

## Print the sorted list
print("Sorted list:", sorted_list)

## Check if the original list is equal to the sorted list
if my_list_from_set == sorted_list:
    print("The original list is sorted.")
else:
    print("The original list is not sorted.")

Теперь запустим скрипт Python. Откройте терминал и перейдите в каталог ~/project:

cd ~/project

Затем выполните скрипт с помощью команды python:

python convert_to_set.py

Вы должны увидеть вывод, похожий на следующий:

Original list from set: [1, 2, 3, 4, 5, 6, 9]
Sorted list: [1, 2, 3, 4, 5, 6, 9]
The original list is sorted.

В этом случае исходный список, полученный из множества, оказался уже отсортированным. Изменим исходный список, чтобы убедиться, что изначально он не отсортирован.

## Create a list with duplicate elements
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

## Convert the list to a set to remove duplicates
my_set = set(my_list)

## Convert the set back to a list
my_list_from_set = list(my_set)

## Shuffle the list to make sure it's not sorted
import random
random.shuffle(my_list_from_set)

## Use sorted() to get a new sorted list
sorted_list = sorted(my_list_from_set)

## Print the original list from set
print("Original list from set:", my_list_from_set)

## Print the sorted list
print("Sorted list:", sorted_list)

## Check if the original list is equal to the sorted list
if my_list_from_set == sorted_list:
    print("The original list is sorted.")
else:
    print("The original list is not sorted.")

Запустите скрипт снова:

python convert_to_set.py

Вы должны увидеть вывод, похожий на следующий:

Original list from set: [9, 2, 4, 5, 6, 1, 3]
Sorted list: [1, 2, 3, 4, 5, 6, 9]
The original list is not sorted.

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

Резюме

В этом практическом занятии (лабораторной работе) вы научились преобразовывать список (list) в множество (set) в Python, эффективно удаляя дубликаты элементов. Множества представляют собой неупорядоченные коллекции, поэтому порядок элементов может измениться при преобразовании.

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