#tpy Теория языка программирования Python
April 26, 2023

Что такое срезы и где они могут пригодиться на ЕГЭ

В Python существует мощный инструмент для работы со структурами данных – это срезы или slice. Срезы позволяют получать подмножество элементов из последовательности. Рассмотрим, как это работает.

⌛️ Перед началом работы с срезами, напомним, что в Python индексация начинается с 0, если мы начинаем счет слева и -1, если счет начинается справа.

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

lst = [1, 2, 3, 4, 5]

Мы можем получить элемент на позиции 0, используя следующий синтаксис:

lst[0]  # результат 1

Теперь рассмотрим, что такое срезы. У срезов есть три параметра: - Откуда начинать (включительно) - До какого момента (не включая) - Шаг (не обязательный параметр)

Первый и второй параметры не обязательно должны быть целыми числами, они также могут быть отсутствовать. Если первый параметр отсутствует, срез начинается с начала. Если второй параметр отсутствует, срез заканчивается в конце.

Теперь давайте рассмотрим несколько примеров с использованием общего списка lst.

lst = [1, 2, 3, 4, 5]

1. Получить первые три элемента списка:

lst[:3]  # результат [1, 2, 3]

2. Получить элементы со второго до четвертого (не включая четвертый):

lst[1:3]  # результат [2, 3]

3. Получить элементы с шагом 2:

lst[::2]  # результат [1, 3, 5]

4. Изменить порядок элементов:

lst[::-1]  # результат [5, 4, 3, 2, 1]

5. Получить элементы задом наперед:

lst[3:0:-1]  # результат [4, 3, 2]

Где срезы могут пригодиться на экзамене?

В пятом номере часто требуют перевести число в двоичную запись, для этого мы можем использовать встроенную функцию bin() , но она возвращает результат с искажением, например:

n = 8
s = bin(n)
print(s) # результат 0b1000, а мы ожидали получить просто 1000

В данном случае проще всего будет срезать первые два элемента, то есть написать:

s = bin(n)[2:] # взяли все начинаю со 2-го по индексу

Часто нас просят взять сумму цифр в строке, а что, если в строке есть не только цифры, но и другие знаки..например:

s = '1243213231>'

Конечно мы можем написать следующий код:

print(sum([int(i) for i in s if i.isdigit()]))

Но вероятно, куда проще будет просто срезать крайний символ, то есть взять все до него:

print(sum([int(i) for i in s[:-1]]))

Уверены, что после прочтения этой статьи вы воспользуетесь срезами в своих программах!