Циклический сдвиг

Выполнить циклический сдвиг в списке целых чисел на указанное число шагов. Сдвиг также должен быть кольцевым, то есть элемент, вышедший за пределы списка, должен появляться с другого его конца.

Решение задачи на языке программирования Python

Для решения этой задачи можно воспользоваться следующими методами списка:

Пусть наша функция shift в качестве аргументов принимает список и количество шагов сдвига. Если шаги представлены положительным числом, то сдвиг выполняется вправо, то есть надо извлечь последний элемент и добавить его в начало.

Если шаги - отрицательное число, то будем выполнять сдвиг справа налево, то есть надо извлечь первый элемент и добавить его в конец.

def shift(lst, steps):
    if steps < 0:
        steps = abs(steps)
        for i in range(steps):
            lst.append(lst.pop(0))
    else:
        for i in range(steps):
            lst.insert(0, lst.pop())


nums = [4, 5, 6, 7, 8, 9, 0]
print(nums)

shift(nums, -2)
print(nums)

shift(nums, 3)
print(nums)

Результат выполнения:

[4, 5, 6, 7, 8, 9, 0]
[6, 7, 8, 9, 0, 4, 5]
[0, 4, 5, 6, 7, 8, 9]


Решение задач на Python




Все разделы сайта