ОХ
Ольга Хлебтовская

Сделать сдвиг индексов списка

Есть список игроков - их места в списке (типа первый, второй, третий и т. п.). На вход программе подают этот самый список и то, как изменилось положение какого-то игрока. Переместить человека в списке нетрудно, а вот сдвинуть всех остальных на позицию вниз... Я всю голову измучил, но так и не смог придумать, как это сделать. Помогите, пожалуйста.

ОП
Олег Писарев

Напишем для этого простенкую функцию:

def migrate(ourList, oldIndex, newIndex):
if oldIndex < newIndex:
return ourList[: oldIndex] + ourList[oldIndex + 1: newIndex + 1] + [ourList[oldIndex]] + ourList[newIndex + 1:]
else:
return ourList[: newIndex] + [ourList[oldIndex]] + ourList[newIndex : oldIndex] + ourList[oldIndex + 1: ]

Где ourList - список, с которым мы работаем
oldIndex - индекс элемента, который надо перенести
newIndex - индекс, куда надо перенести элемент с индексом oldIndex

Вя
Вячеслав

У списков есть методы pop() и insert().
Например так:

A = ['a', 'b', 'c', 'd']
sh = 'd', -2

print(A)
p_old = A.index(sh[0])
p_new = p_old + sh[1]
A.insert(p_new, A.pop(p_old))
print(A)

Не указано в задаче как "подают этот самый список и то, как изменилось положение какого-то игрока", поэтому я написал как мне в голову пришло.

И можно наверное конечно и в одну строку упихнуть, но по-моему так понятнее.

Похожие вопросы
Можно ли в cue сделать сдвиг индексов?
Что за женские сдвиги?
что такое индекс? и как его сделать?
Арифметический сдвиг
Как в питон загрузить огромное число, сделав его в коде маленьким?
Как в python или c++ сделать встроенный в windows поиск файлов?
Питон как сделать повторение при нажати
Было тут когда-то задание на поиск наиболее повторяющегося элемента списка. Свой алгоритм придумал, но... (+)
Python как сделать сохранение файла
PYTHON как сделать проверку длины пароля? у меня py charm