Подтвердить что ты не робот

Список [i: j] гарантированно является пустым списком, если список [j] предшествует списку [i]?

Учебник Python объясняет поведение среза, когда индексы отрицательны, но я не могу найти документацию, описывающую поведение, когда индекс конца предшествует начальный индекс. (Я также рассмотрел Объяснение ноты фрагмента Python, и, возможно, я недостаточно читаю, но ответы там, похоже, не затрагивают этот вопрос.)

Поведение, которое я наблюдаю, это то, что возвращается пустой список, что кажется мне разумным. Однако мне также представляется разумным, чтобы это возвращало список элементов между i и j в обратном порядке или просто вызывало исключение.

Является list[i:j] гарантированным пустым списком, если list[j] предшествует list[i]?

4b9b3361

Ответ 1

Да, если j <= i - true, результирующий фрагмент пуст для стандартных типов Python. Чтобы получить результаты в обратном порядке, вам нужно добавить отрицательный шаг:

list[i:j:-1]

потому что явный лучше, чем неявный.

Это описано в разделе Общие операции последовательности, сноска 4:

Срез s от я до j определяется как последовательность элементов с индексом k, такая что i <= k < j. Если я или j больше, чем len(s), используйте len(s). Если я опущено или None, используйте 0. Если j опущено или None, используйте len(s). Если я больше или равно j, срез пуст.

Смелый акцент мой.

Пользовательские типы могут свободно интерпретировать это по-другому.