Использование срезов (slicing) для обращения списка
На этом этапе вы сосредоточитесь на том, как в 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]
эффективно обращает список, который затем используется для определения, является ли исходный список палиндромом.