Задача D. ShiftableList

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется реализовать на языке Python класс ShiftableList(list), который наследуется от list и реализует операторы циклического сдвига влево (<<) и вправо (>>). Результатом выполнения этих операций должен быть новый объект, при этом исходный не изменяется. Если операнд справа от оператора сдвига имеет тип, отличный от int, необходимо вызвать исключение TypeError. В случае, если величина сдвига отрицательна, должен выполниться сдвиг в противоположную сторону на количество позиций, равное модулю этой величины.

Формат выходных данных

Код решения должен содержать только определение и реализацию класса.

Примеры тестов

Стандартный вход Стандартный выход
1 lst = ShiftableList(['a', 'b', 'c']) lst2 = lst << 1 print(', '.join(lst2))
b, c, a
2 lst = ShiftableList(['a', 'b', 'c']) lst2 = lst >> -2 print(''.join(lst), ''.join(lst2))
abc cab

0.114s 0.026s 13