0
0 Комментариев

Пишу функцию, которая продвигает элементы по списку, как по кругу (последний элемент становится первым, все остальные двигаются вперёд).

def spinForward(array):
    N = len(array);
    newArray = [];
    newArray.append(array[N-1]);
    newArray.extend(array);
    newArray.pop();
    array = newArray[:];

На следующий вызов:

a = ["how", "are", "you", "?"]
spinForward(a);
print(a);

Ожидаю получить:

['?', 'how', 'are', 'you']

Однако этого не происходит, исходный список при этом нисколько не меняется.

Конструкция работает в таком случае:

def spinForward(array):
    N = len(array);
    newArray = [];
    newArray.append(array[N-1]);
    newArray.extend(array);
    newArray.pop();
    while array:
        array.pop();
    array.extend(newArray);

Читал на Стеке про глобальные переменные, но если помечать array оператором global, то вылетает ошибка на то, что array — одновременно и входная, и глобальная переменная, a даже если это как-то исправить (хотя как?), придется входной список перед вызовом именовать array, что, мне кажется, уж точно неверно.

Есть ли более гибкий вариант переопределения входного параметра или же мой рабочий вариант реализован хорошо?


Добавить комментарий