Я понимаю, что с учетом итерации, такой как
>>> it = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Я могу превратить его в список и отрезать концы в произвольных точках, например,
>>> it[1:-2]
[2, 3, 4, 5, 6, 7]
или отмените его с помощью
>>> it[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
или объединить два с
>>> it[1:-2][::-1]
[7, 6, 5, 4, 3, 2]
Однако попытка выполнить это за одну операцию приводит к некоторым результатам, которые меня озадачат:
>>> it[1:-2:-1]
[]
>>>> it[-1:2:-1]
[9, 8, 7, 6, 5, 4]
>>>> it[-2:1:-1]
[8, 7, 6, 5, 4, 3]
Только после долгих проб и ошибок, я получаю то, что я ищу:
>>> it[-3:0:-1]
[7, 6, 5, 4, 3, 2]
Это заставляет мою голову болеть (и не может помочь читателям моего кода):
>>> it[-3:0:-1] == it[1:-2][::-1]
True
Как я могу это понять? Должен ли я даже обдумывать такие вещи?
FWYW, мой код делает много усечений, реверсирования и перечисления итераций, и я искал что-то более быстрое и четкое (да, не смейтесь), чем list(reversed(it[1:-2]))
.