Python stop увеличивает список в определенном состоянии - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь реализовать простое вращение влево в списке. Пожалуйста, просмотрите следующее Код: `

def left_rotation(n,d,arr):
    temp = arr
    for i in range(n):
        print(temp[i])  # here is the problem
        if (i-d < 0):
            arr[i+n-d] = temp[i]
        else:
            arr[i-d] = temp[i]
    return arr
print(left_rotation(5, 4,[1,2,3,4,5]))

Когда я помещаю структуру if-else, она не получает доступа к переменной temp, но когда я удаляю if-else, она работает. Как вы это объясните?

1 Ответ

0 голосов
/ 27 января 2019

temp = arr не копирует список.Он только создает новую ссылку, которая указывает на тот же список.Для копирования вы можете использовать temp = arr[:]

def left_rotation(n,d,arr):
        temp = arr[:]
        for i in range(n):
            print(temp[i])  # here is the problem
            if (i-d < 0):
                arr[i+n-d] = temp[i]
            else:
                arr[i-d] = temp[i]
        return arr
    print(left_rotation(5, 4,[1,2,3,4,5]))

Это должно работать.Пример вывода1:

>>> print(left_rotation(5,2,[1,2,3,4,5]))
1
2
3
4
5
[3, 4, 5, 1, 2]

Пример вывода2:

>>> print(left_rotation(5,1,[1,2,3,4,5]))
1
2
3
4
5
[2, 3, 4, 5, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...