Что такое срезы и где они могут пригодиться на ЕГЭ
В 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]]))
Уверены, что после прочтения этой статьи вы воспользуетесь срезами в своих программах!