Линия:
def rotate(arr, n):
# ...
<b>arr = b</b>
не делает много. arr
- локальная переменная, поэтому присвоение ей другого значения не влияет на переменную, с которой вы ее вызвали. Python не выполняет вызов по ссылке , он выполняет вызов по значению . Если объект является изменяемым, вы можете изменить состояние этого объекта, но вы не можете изменить ссылку на переменную, указывающую на этот объект (или, по крайней мере, без некоторых хитростей).
Самый элегантный способ решить эту проблему, вероятно, вернуть новый объект и установить его на уровне вызывающего:
def rotate(arr, n):
return arr[n:] + arr[:n]
и позвоните, как:
arr = rotate(arr, len(n)-1)