Почему расширенная нарезка не переворачивает список? - PullRequest
0 голосов
/ 09 июля 2019

Я нарезаю списки в python и не могу объяснить некоторые результаты.Оба из следующих представлений кажутся мне естественными:

>>>[0,1,2,3,4,5][1:4:1]
[1, 2, 3]

>>>[0,1,2,3,4,5]
[::-1] == [5,4,3,2,1,0]

Однако,

>>>[0,1,2,3,4,5][1:4:-1]
[]

думал, что я ожидал, что это будет [3,2,1].Почему он производит []?Почему это не перевернуть список?Что происходит сначала в питоне, шаг или нарезка?

Я также обнаружил, что

>>>[0,1,2,3,4,5][-3:-6:-1]
[3,2,1]

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Если вы нарезаете это, то нарезка будет выглядеть следующим образом [start:end:step]. Для этого:

>>> [0,1,2,3,4,5][1:4:1]
[1, 2, 3]

Он смотрит с индекса 1 на индекс 3, потому что он исключает индекс 4 с 1 шагом за раз. Вы получаете пустой список во втором, потому что вы шагаете -1 из первого индекса. Так что это будет решением.

>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]

Это работает, потому что вы берете индекс от 4 до единицы с -1 шагом вперед.

0 голосов
/ 09 июля 2019

Третье число в срезе - это количество шагов.Таким образом, в [0,1,2,3,4,5][1:4:-1] срез начинается с 1 и понижается на 1 до тех пор, пока не станет меньше 4, что сразу же будет.Попробуйте сделать это:

>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...