Отрицательный шаг ведет себя так же, как в range(start, stop, step)
.Что нужно помнить об отрицательном шаге, так это то, что stop
всегда является исключенным концом, независимо от того, выше он или ниже.
Часто люди удивляются, что '0123456789'[5:0:-1] == '54321'
, а не '43210'
Если вам нужна какая-то подпоследовательность, только в обратном порядке, гораздо чище делать инверсию отдельно.Например, отрезают один символ слева, два справа, затем наоборот: '0123456789'[1:-2][::-1] == '7654321'
с.Если вам не нужна копия, просто хотите зациклить, она будет еще более читабельной с reversed()
:
for char in reversed('0123456789'[1:-2]):
...