Я не думаю, что диаграмма Python tutorial (цитируется в различных других ответах) хороша, поскольку это предложение работает для положительного шага, но не для отрицательного шага.
Это диаграмма:
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
Из диаграммы я ожидаю, что a[-4,-6,-1]
будет yP
, но это ty
.
>>> a = "Python"
>>> a[2:4:1] # as expected
'th'
>>> a[-4:-6:-1] # off by 1
'ty'
Что всегда работает, так это думать в символах или слотах и использовать индексирование в качестве полуоткрытого интервала - вправо-открыто, если положительный шаг, лево-открыто, если отрицательный шаг.
Таким образом, я могу думать о a[-4:-6:-1]
как a(-6,-4]
в интервальной терминологии.
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
+---+---+---+---+---+---+---+---+---+---+---+---+
| P | y | t | h | o | n | P | y | t | h | o | n |
+---+---+---+---+---+---+---+---+---+---+---+---+
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5