Простой Python. Современный стиль программирования (Любанович) - страница 29

>'uvwxyz'

А теперь — начиная с 10-го и заканчивая последним:

>>>> letters[10:]

>'klmnopqrstuvwxyz'

А теперь получим символы с 12-го по 14-й (Python не включает символ, расположенный под номером, который указан последним):

>>>> letters[12:15]

>'mno'

Последние три символа:

>>>> letters[-3:]

>'xyz'

В следующем примере мы начинаем со смещения 18 и идем до четвертого с конца символа. Обратите внимание на разницу с предыдущим примером, где старт с позиции -3 получал символ х. В этом примере конец диапазона -3 означает, что последним будет символ по адресу -4 — w:

>>>> letters[18:-3]

>'stuvw'

В следующем примере мы получаем символы, начиная с шестого с конца и заканчивая третьим с конца:

>>>> letters[-6:-2]

>'uvwx'

Если вы хотите увеличить шаг, укажите его после второго двоеточия, как показано в нескольких следующих примерах.

Каждый седьмой символ с начала до конца:

>>>> letters[::7]

>'ahov'

Каждый третий символ, начиная со смещения 4 и заканчивая 19-м символом:

>>>> letters[4:20:3]

>'ehknqt'

Каждый четвертый символ, начиная с 19-го:

>>>> letters[19::4]

>'tx'

Каждый пятый символ от начала до 20-го:

>>>> letters[:21:5]

>'afkpu'

Опять же значение end должно быть на единицу больше, чем реальное смещение.

И это еще не все! Если задать отрицательный шаг, любезный Python будет двигаться в обратную сторону. В следующем примере движение начинается с конца и заканчивается в начале, ни один символ не пропущен:

>>>> letters[-1::-1]

>'zyxwvutsrqponmlkjihgfedcba'

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

>>>> letters[::-1]

>'zyxwvutsrqponmlkjihgfedcba'

Операция slice более мягко относится к неправильным смещениям, чем поиск по индексу. Если указать смещение меньшее, чем начало строки, оно будет обрабатываться как 0, а если указать смещение большее, чем конец строки, оно будет обработано как –1. Это показано в следующих примерах.

Начиная с –50-го символа и до конца:

>>>> letters[-50:]

>'abcdefghijklmnopqrstuvwxyz'

Начиная с –51-го символа и заканчивая –50-м:

>>>> letters[-51:-50]

>''

От начала до 69-го символа:

>>>> letters[:70]

>'abcdefghijklmnopqrstuvwxyz'

Начиная с 70-го символа и заканчивая 70-м:

>>>> letters[70:71]

>''

Получаем длину строки с помощью функции len()

До этого момента мы использовали специальные знаки препинания вроде +, чтобы манипулировать строками. Но существует не так уж много подобных функций. Теперь мы начнем использовать некоторые встроенные функции Python: именованные фрагменты кода, которые выполняют определенные операции.

Функция len() подсчитывает символы в строке:

>>>> len(letters)

>26

>>>> empty = ""

>>>> len(empty)