Ваш алгоритм в порядке, единственная проблема - b=a
, заставляет b также указывать на a, но вы хотите взять copy
из a, полученного путем нарезки списка b = a[:]
, а затем код отлично работает.
def rotLeft(a, d):
#Take copy of a and assign to b
b = a[:]
lengthOfArray = len(a)
shift = d
for i in range (0,lengthOfArray):
newLocation = (i + (lengthOfArray - shift)) % lengthOfArray
b[newLocation] = a[i]
return b
print(rotLeft([12, 76, 1, 9, 13], 4))
Выход будет
[13, 12, 76, 1, 9]