К элементам строки можно обращаться но индексу, прямо как в С. Первый символ строки имеет индекс 0. В отличие от языка С, строки в Python изменять нельзя. Назначение значения индексу строки, приведет к ошибке.
>>> s = 'Hello' >>> s[0] 'H' >>> s[0] = 'h' Traceback (most recent call last): File "&;lt;pyshell#38>", line 1, in <module> s[0] = 'h' TypeError: 'str' object does not support item assignmentОперация извлечения нескольких индексов, называется срезом. Для создания среза (подстроки) используется два индекса, разделенные двоеточиями.
>>>word = 'HelpA' >>> word[4] 'A' >>> word[0:2] 'He' >>> word[2:4] 'lp'У среза опущенный первый индекс по умолчанию будет равен нулю, а второй размеру строки.
>>> word[:2] # The first two characters 'He' >>> word[2:] # Everything except the first two characters 'lpA'Третий индекс в срезе означает шаг.
>>> word = 'HelpA' >>> word[::2] 'HlA'При помощи срезом можно очень просто и в тоже время очень эффективно создавать новые строки на базе уже имеющихся.
>>> 'x' + word[1:] 'xelpA' >>> 'Splat' + word[4] 'SplatA' >>> word[:2] + word[2:] 'HelpA' >>> word[:3] + word[3:] 'HelpA'Вырожденные срезы обрабатываются корректно. Слишком большой индекс, заменяется на размер строки, а если верхняя граница меньше, чем нижняя возвращается пустая строка.
>>> word[1:100] 'elpA' >>> word[10:] '' >>> word[2:1] ''Индексы могут быть отрицательными, в этом случае отсчет начинается с права.
>>> word[-1] # The last character 'A' >>> word[-2] # The last-but-one character 'p' >>> word[-2:] # The last two characters 'pA' >>> word[:-2] # Everything except the last two characters 'Hel' >>> word[-0] # (since -0 equals 0) 'H'Следует обратить внимание, что -0 это 0, поэтому отсчет не начинается с права. В случаи, если отрицательные индексы выходят за диапазон, срез усекается. Но это не сработает, если индекс будет один, интерпретатор выдаст ошибку.
>>> word[-100:] 'HelpA' >>> word[-10] # error Traceback (most recent call last): File "Можно легко запомнить как работают срезы, если представить индексы как указатели между символами.", line 1, in ? IndexError: string index out of range
+---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1Небольшой фокус. Если сделать полный срез строки, но с отрицательным шагом, мы получим перевернутую строку.
>>> word 'HelpA' >>> word[::-1] 'ApleH'А для того чтобы получить последний элемент в строке, достаточно просто задать индекс -1.
>>> word 'HelpA' >>> word[-1] 'A'