Если вы не слишком привязаны к точному синтаксису среза, вы можете написать функцию, которая производит желаемый вывод, включая поведение обтекания.
Например, например:
def wrapping_slice(lst, *args):
return [lst[i%len(lst)] for i in range(*args)]
Пример вывода:
>>> L = range(3)
>>> wrapping_slice(L, 1, 4)
[1, 2, 0]
>>> wrapping_slice(L, -1, 4)
[2, 0, 1, 2, 0]
>>> wrapping_slice(L, -1, 4, 2)
[2, 1, 0]
Предупреждение: Вы не можете использовать это с левой стороны назначения среза .