>>> c=bob[0].split() >>> c ['Bob', 'Smith'] >>> c[1] 'Smith' >>> c[0] 'Bob' >>> c[-1] 'Smith' >>> c[-2] 'Bob'
Анонимный пользователь Изменен статус публикации
Некоторые типы в Python вроде списков и строк поддерживают отрицательные индексы. Они позволяют брать элементы с конца: c[-1]
это последний элемент, c[-2]
предпоследний и так далее. Отрицательные индексы можно переписать на вычисление положительного индекса, примерно так: c[len(c) - 1]
, c[len(c) - 2]
и так далее.
В документации Python есть наглядная диаграммка, показывающая, как нумеруются символы в строке (для списков тоже применимо):
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
Тем не менее, проверка на выход за пределы списка/строки всё ещё имеется:
>>> s = 'Python' >>> s[6] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range >>> s[-7] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range
Кстати, с помощью расширенного синтаксиса срезов можно перевернуть список, если указать отрицательный шаг:
>>> c = ['Bob', 'Smith'] >>> c[::-1] ['Smith', 'Bob']