Кольцевой циклический сдвиг

def shift(lst, steps):
    """Циклический сдвиг списка.
    lst - список,
    steps - количество шагов.
    Если значение 'steps' отрицательно,
    то сдвиг влево,
    если положительно, то вправо."""

    # сдвиг влево
    if steps < 0:
        steps = abs(steps)
        # Количество итераций цикла равно
        # количеству шагов.
        for i in range(steps):
            # Извлекается первый элемент
            item = lst.pop(0)
            # и добавляется в конец списка.
            lst.append(item)

    # сдвиг вправо
    else:
        for i in range(steps):
            # Извлекается последний элемент
            item = lst.pop()
            # и вставляется в начало списка.
            lst.insert(0, item)


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

# сдвиг влево на 2 позиции
shift(nums, -2)
print(nums)

# Сдвиг вправо на 3 позиции.
# Сдвигаться будет список,
# уже измененный от предыдущего
# вызова shift().
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]


Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий