Как читать нарезки с отрицательным шагом - PullRequest
3 голосов
/ 26 января 2020

Я уже видел некоторые вопросы о нарезке, но не нашел полезного ответа относительно некоторых из них, который мне не удается понять очень хорошо. Допустим, у нас есть этот список a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] И я нарезаю его следующим образом:

a[:8:-1] #Ouput: [9]

Почему? Мы даем ему конец 8 и шаг -1. Как же так себя ведет?

1 Ответ

7 голосов
/ 26 января 2020

Если вы пропустите первую часть выражения среза, по умолчанию будет None. Когда list.__getitem__ приходит время интерпретировать, что означает slice(None, 8, -1), он использует знак размера шага, чтобы определить, будете ли вы считать от 0 или ниже от конца списка. В этом случае вы ведете обратный отсчет, поэтому :8:-1 эквивалентно slice(-1, 8, -1).

...