>'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]
>''