Введение
В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли список палиндромом на Python. Палиндром - это последовательность, которая читается одинаково как слева направо, так и справа налево. В рамках практического занятия вы создадите скрипт на Python для определения, являются ли списки палиндромами.
Вы рассмотрите два метода: сравнение списка с его обратной версией с использованием срезов (slicing) и явное обращение списка для сравнения. В практическом занятии приведены примеры кода и инструкции по запуску скрипта и интерпретации вывода, которые показывают, являются ли заданные списки палиндромами или нет.
Понять, что такое палиндромные списки
На этом этапе вы узнаете о палиндромах списков и о том, как их определять на Python. Палиндром - это последовательность, которая читается одинаково как с начала до конца, так и с конца до начала. Например, слово "madam" является палиндромом. В контексте списков палиндром списка - это список, элементы которого одинаковы при чтении с начала до конца или с конца до начала.
Начнем с создания скрипта на Python для исследования палиндромов списков.
Откройте редактор VS Code.
Создайте новый файл с именем
palindrome.pyв директории~/project.touch ~/project/palindrome.pyОткройте файл
palindrome.pyв редакторе.
Теперь добавим некоторый код в файл palindrome.py, чтобы понять, как проверить, является ли список палиндромом.
def is_palindrome(lst):
return lst == lst[::-1]
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
В этом коде:
- Мы определяем функцию
is_palindrome(lst), которая принимает списокlstв качестве входных данных. - Внутри функции мы сравниваем список с его обратной версией, используя срез (slicing)
lst[::-1]. - Функция возвращает
True, если список является палиндромом, иFalseв противном случае. - Мы создаем два примера списков:
list1, который является палиндромом, иlist2, который не является палиндромом. - Мы используем функцию
print(), чтобы показать, является ли каждый список палиндромом или нет.
Чтобы запустить скрипт, выполните следующую команду в терминале:
python ~/project/palindrome.py
Вы должны увидеть следующий вывод:
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
Этот вывод подтверждает, что list1 является палиндромом, а list2 - нет.
Сравнение с обратным списком
На этом этапе вы рассмотрите другой метод проверки, является ли список палиндромом, путем явного обращения списка и сравнения его с исходным списком. Этот подход позволяет более детально понять процесс проверки на палиндром.
Давайте изменим файл palindrome.py, который вы создали на предыдущем этапе.
Откройте файл
palindrome.pyв редакторе VS Code.Измените содержимое файла
palindrome.pyследующим образом:
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
В этом измененном коде:
- Внутри функции
is_palindrome(lst)мы создаем обратную копию входного спискаlstс использованием среза (slicing)lst[::-1]и сохраняем ее в переменнойreversed_lst. - Затем мы сравниваем исходный список
lstс обратным спискомreversed_lstс помощью оператора равенства==. - Функция возвращает
True, если исходный список равен обратному списку (то есть является палиндромом), иFalseв противном случае.
Чтобы запустить скрипт, выполните следующую команду в терминале:
python ~/project/palindrome.py
Вы должны увидеть такой же вывод, как на предыдущем этапе:
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
Этот вывод подтверждает, что list1 является палиндромом, а list2 - нет, с использованием метода явного обращения списка. Этот подход делает логику более явной и легкой для понимания.
Использование срезов для разворота списка
На этом этапе вы сосредоточитесь на том, как в Python можно использовать срезы (slicing) для обращения списка. Срезы - это мощный инструмент, который позволяет извлекать части списка, а также создавать обратную копию списка.
Вернемся к файлу palindrome.py и рассмотрим метод срезов более подробно.
Откройте файл
palindrome.pyв редакторе VS Code.Убедитесь, что содержимое файла
palindrome.pyвыглядит следующим образом:
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Ключевой частью этого кода является lst[::-1]. Это операция среза (slicing), которая создает обратную копию списка. Разберем ее:
lst[:]создаст копию всего списка.lst[start:end]создаст срез от индексаstartдоend - 1.lst[start:end:step]позволяет указатьstep(шаг). Шаг-1означает итерацию по списку в обратном порядке.- Пропустив
startиendи использовав шаг-1(то естьlst[::-1]), вы создаете обратную копию всего списка.
Для дальнейшего иллюстрации этого добавим несколько операторов вывода, чтобы увидеть эффект среза:
def is_palindrome(lst):
reversed_lst = lst[::-1]
print(f"Original list: {lst}")
print(f"Reversed list: {reversed_lst}")
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Теперь запустите скрипт еще раз:
python ~/project/palindrome.py
Вы увидите исходный и обратный списки, выведенные перед результатом проверки на палиндром:
Original list: [1, 2, 3, 2, 1]
Reversed list: [1, 2, 3, 2, 1]
[1, 2, 3, 2, 1] is a palindrome: True
Original list: [1, 2, 3, 4, 5]
Reversed list: [5, 4, 3, 2, 1]
[1, 2, 3, 4, 5] is a palindrome: False
Это демонстрирует, как срез [::-1] эффективно обращает список, который затем используется для определения, является ли исходный список палиндромом.
Резюме
В этом практическом занятии (лабораторной работе) вы научились определять палиндромные списки в Python. Палиндромный список - это список, который читается одинаково как с начала, так и с конца. Вы создали скрипт palindrome.py, содержащий функцию is_palindrome(lst), которая использует срез (lst[::-1]) для эффективного обращения списка и сравнения его с исходным. Функция возвращает True, если список является палиндромом, и False в противном случае.
Скрипт был протестирован на двух примерах списков: list1 (палиндром) и list2 (не палиндром). Вывод программы подтвердил, что функция может правильно определять палиндромы. В рамках практического занятия также был рассмотрен подход явного обращения списка для сравнения, хотя предоставленное содержание было урезано.



