Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, отсортирован ли кортеж (tuple) по убыванию в Python. В рамках практики рассматриваются различные методы для достижения этого, с акцентом на использование встроенных функций Python.
В практике (лабораторной работе) вас научат создавать и манипулировать кортежами, показывается, как использовать функцию sorted() с параметром reverse=True для сортировки кортежа по убыванию. Также вводится концепция разворота кортежа и проверки, отсортирован ли развернутый кортеж по возрастанию.
Исследуйте убывающий порядок в кортежах
На этом этапе вы научитесь работать с кортежами (tuples) и познакомитесь с концепцией убывающей сортировки. Кортежи похожи на списки (lists), но они неизменяемы (immutable), то есть их элементы нельзя изменить после создания. Мы сосредоточимся на создании кортежей и затем узнаем, как отсортировать их в убывающем порядке.
Сначала создадим простой кортеж:
my_tuple = (5, 2, 8, 1, 9)
print(my_tuple)
Создайте файл с именем tuple_sort.py в директории ~/project с помощью редактора VS Code. Скопируйте и вставьте приведенный выше код в файл.
Теперь запустите скрипт, используя следующую команду в терминале:
python tuple_sort.py
Вы должны увидеть следующий вывод:
(5, 2, 8, 1, 9)
Далее исследуем, как отсортировать этот кортеж в убывающем порядке. Поскольку кортежи неизменяемы, мы не можем напрямую отсортировать их. Вместо этого можно использовать функцию sorted(), которая возвращает новый отсортированный список из элементов любого итерируемого объекта. Чтобы отсортировать в убывающем порядке, можно использовать параметр reverse=True.
Добавьте следующий код в файл tuple_sort.py:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
sorted_tuple = tuple(sorted(my_tuple, reverse=True))
print("Sorted tuple (descending):", sorted_tuple)
Вот как работает этот код:
sorted(my_tuple, reverse=True): Эта функция сортирует элементыmy_tupleв убывающем порядке и возвращает список.tuple(...): Эта функция преобразует отсортированный список обратно в кортеж.
Теперь запустите скрипт еще раз:
python tuple_sort.py
Вы должны увидеть следующий вывод:
Original tuple: (5, 2, 8, 1, 9)
Sorted tuple (descending): (9, 8, 5, 2, 1)
Как вы можете видеть, функция sorted() с параметром reverse=True позволяет легко отсортировать кортеж в убывающем порядке и создать новый кортеж с отсортированными элементами.
Инвертировать и проверить порядок возрастания
На этом этапе вы научитесь разворачивать кортеж и проверять, отсортирован ли развернутый кортеж по возрастанию. Это включает в себя комбинирование концепций разворота последовательности и проверки ее порядка.
Начнем с кортежа, который мы использовали на предыдущем этапе:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
Добавьте этот код в файл tuple_sort.py или, если хотите, создайте новый файл.
Для разворота кортежа можно использовать срез (slicing). Добавьте следующие строки в ваш скрипт:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
reversed_tuple = my_tuple[::-1]
print("Reversed tuple:", reversed_tuple)
Здесь [::-1] создает развернутую копию кортежа.
Теперь запустите скрипт:
python tuple_sort.py
Вы должны увидеть следующий вывод:
Original tuple: (5, 2, 8, 1, 9)
Reversed tuple: (9, 1, 8, 2, 5)
Теперь проверим, отсортирован ли развернутый кортеж по возрастанию. Для этого можно пройти по кортежу и сравнить каждый элемент с последующим. Если какой - то элемент больше следующего, то кортеж не отсортирован по возрастанию.
Добавьте следующую функцию в файл tuple_sort.py:
def is_ascending(t):
for i in range(len(t) - 1):
if t[i] > t[i+1]:
return False
return True
Эта функция проходит по кортежу t и возвращает False, если какой - то элемент больше следующего. В противном случае возвращает True.
Теперь используем эту функцию, чтобы проверить, отсортирован ли наш развернутый кортеж по возрастанию:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
reversed_tuple = my_tuple[::-1]
print("Reversed tuple:", reversed_tuple)
def is_ascending(t):
for i in range(len(t) - 1):
if t[i] > t[i+1]:
return False
return True
if is_ascending(reversed_tuple):
print("Reversed tuple is in ascending order.")
else:
print("Reversed tuple is not in ascending order.")
Запустите скрипт еще раз:
python tuple_sort.py
Вы должны увидеть следующий вывод:
Original tuple: (5, 2, 8, 1, 9)
Reversed tuple: (9, 1, 8, 2, 5)
Reversed tuple is not in ascending order.
Это подтверждает, что развернутый кортеж не отсортирован по возрастанию, как и ожидалось.
Используйте sorted() с reverse=True
На этом этапе мы углубимся в использование функции sorted() с параметром reverse=True для сортировки кортежей в убывающем порядке. Мы рассмотрим различные сценарии и покажем, как эффективно применить этот метод.
Вернемся к кортежу, с которым мы работали ранее:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
Убедитесь, что этот код находится в файле tuple_sort.py. Если нет, добавьте его сейчас.
Как мы узнали на первом этапе, функция sorted() может быть использована для сортировки элементов кортежа. Когда мы устанавливаем reverse=True, элементы сортируются в убывающем порядке. Используем это для сортировки нашего кортежа и вывода результата:
my_tuple = (5, 2, 8, 1, 9)
print("Original tuple:", my_tuple)
sorted_tuple = tuple(sorted(my_tuple, reverse=True))
print("Sorted tuple (descending):", sorted_tuple)
Теперь запустите скрипт:
python tuple_sort.py
Вы должны увидеть следующий вывод:
Original tuple: (5, 2, 8, 1, 9)
Sorted tuple (descending): (9, 8, 5, 2, 1)
Теперь рассмотрим другой сценарий. Предположим, у нас есть кортеж строк:
string_tuple = ("apple", "banana", "cherry", "date")
print("Original string tuple:", string_tuple)
Добавьте этот код в файл tuple_sort.py.
Мы также можем отсортировать этот кортеж в убывающем порядке, используя sorted() с параметром reverse=True. При сортировке строк Python использует лексикографический порядок (то есть порядок словаря).
Добавьте следующие строки в ваш скрипт:
string_tuple = ("apple", "banana", "cherry", "date")
print("Original string tuple:", string_tuple)
sorted_string_tuple = tuple(sorted(string_tuple, reverse=True))
print("Sorted string tuple (descending):", sorted_string_tuple)
Запустите скрипт еще раз:
python tuple_sort.py
Вы должны увидеть следующий вывод:
Original string tuple: ('apple', 'banana', 'cherry', 'date')
Sorted string tuple (descending): ('date', 'cherry', 'banana', 'apple')
Как вы можете видеть, строки отсортированы в обратном алфавитном порядке.
В целом, функция sorted() с параметром reverse=True предоставляет гибкий способ сортировки кортежей (и других итерируемых объектов) в убывающем порядке, независимо от того, содержат они числа или строки. Это фундаментальный метод для манипуляции данными в Python.
Резюме
В этом практическом занятии (лабораторной работе) вы изучили, как работать с кортежами и сортировать их в убывающем порядке. Вы узнали, что кортежи являются неизменяемыми (immutable), то есть их нельзя изменить после создания. Чтобы отсортировать кортеж в убывающем порядке, вы использовали функцию sorted() с параметром reverse=True, которая возвращает новый отсортированный список. Затем этот список был преобразован обратно в кортеж.
Вы создали файл tuple_sort.py, добавили код для сортировки примерного кортежа в убывающем порядке и проверили вывод. В практическом занятии показано, как эффективно использовать функцию sorted() для сортировки кортежей в убывающем порядке.



