Потерпи меня, пока я объясняю свой вопрос. Перейдите к жирному заголовку, если вы уже понимаете расширенную индексацию списка фрагментов.
В python вы можете индексировать списки, используя обозначения слайсов. Вот пример:
>>> A = list(range(10))
>>> A[0:5]
[0, 1, 2, 3, 4]
Вы также можете включить шаг, который действует как «шаг»:
>>> A[0:5:2]
[0, 2, 4]
Шаг также может быть отрицательным, то есть элементы извлекаются в обратном порядке:
>>> A[5:0:-1]
[5, 4, 3, 2, 1]
Но подождите! Я хотел увидеть [4, 3, 2, 1, 0]
. О, я вижу, мне нужно уменьшить начальный и конечный индексы:
>>> A[4:-1:-1]
[]
Что случилось? Он интерпретирует -1 как конец массива, а не начало. Я знаю, что вы можете достичь этого следующим образом:
>>> A[4::-1]
[4, 3, 2, 1, 0]
Но вы не можете использовать это во всех случаях. Например, в методе, которому были переданы индексы.
Мой вопрос:
Есть ли хороший питонский способ использования расширенных срезов с отрицательными шагами и явными индексами начала и конца , которые включают первый элемент последовательности?
Это то, что я придумал до сих пор, но это кажется неудовлетворительным.
>>> A[0:5][::-1]
[4, 3, 2, 1, 0]