Задача 5C. 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.101s 0.017s 13