Нарезка не работает правильно в python - PullRequest
0 голосов
/ 08 мая 2020

Почему указанный ниже код не работает:

a=[1,2,3,4,5,6,7,8,9]
print(a[1::-1])

Этот код должен печатать [2,1,9,8,7,6,5,4 , 3]. Но он печатает [2,1]. Почему это происходит?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

в параметре шага вы указываете -1, поэтому он будет go от конца до начала, следовательно, он будет печатать [2,1]

0 голосов
/ 08 мая 2020

Я предполагаю, что ваш logi c для печати кода [2, 1, 9, 8, 7, 6, 5, 4, 3] начинается с первого индекса (2), затем уменьшается чтобы напечатать 0-й индекс (1). Затем он устанавливает индекс на последний (индекс 8, который равен 9) и возвращается оттуда. Итак:

1 -> 0 -> 8 -> 7 -> ... -> 3

Однако, что происходит при разрезании списка, индекс останавливается на 0. т.е. никогда выходит за пределы длины списка или 0. Таким образом, это выглядит примерно так:

1 -> 0

Если вы хотите напечатать [2, 1, 9, 8, 7, 6, 5, 4, 3], используя нарезку списка, следующий код должен работать:

print(a[1::-1] + a[:1:-1])

Здесь мы добавляем два списка, которые go из индекса 1-0 и из последний индекс списка до 1

...