Это потому, что синтаксис string[start:end:step]
"123456"[::-2]
Создает "642", потому что он начинается с последнего символа.Это потому, что вы не указали, с какой позиции будет выполняться срез.Таким образом, он будет возвращаться на 2 символа из последнего, пока не достигнет первого.
"123456"[1::-2]
Создает «2», потому что вы сказали Python начинать со 2-го символа (индекс 1 из строки)и вы сказали Python вернуться на 2 шага от этой позиции.Что в этом случае, Python, очевидно, вернул бы просто «2».Это потому, что когда Python попытался вернуться назад на 2 шага, он уже ударил первый символ в строке всего одним шагом.
"123456"[2::-2]
Вы должны быть в состоянии выяснить это сейчас.Но я все равно объясню.Итак, вы сказали Python начать с третьего символа (или индекса 2), а затем вернуться назад на 2 шага, пока он не достигнет первого символа.Таким образом, он начнется с «3», а затем вернется на 2 шага, и случайно будет достигнут первый символ - который, как оказалось, «1».Таким образом, Python даст вам «31»