Я пытаюсь реализовать функцию для вставки () в массив - PullRequest
0 голосов
/ 11 февраля 2020
def insertElement(element, position, array):
    last = len(array) - 1
    if position > len(array) or position < 0:
        print("position does not exist")
    else:
        for q in range(len(array)+1, position, -1):
            array[q+1] = array[q]
            print(array)
        last += 1
        array[position] = element

Сообщение об ошибке:

array[q+1] = array[q] IndexError: list index out of range

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Как уже отмечали другие, вы не можете сделать это, назначив несуществующую позицию списка. Вы должны использовать операцию, которая увеличивает список: append или extend в некоторой форме, которая включает в себя оператор +. Это проще всего сделать с помощью ломтиков, таких как

array = array[:position] + [element] + array[position:]
0 голосов
/ 11 февраля 2020

Вам необходимо расширить список, иначе вы бы присвоили индекс, который не существует.
Кроме того, l oop

for q in range(len(array)+1, position, -1):

должен начинаться с len(array)-2 до position-1 .

Ваш код становится:

def insertElement(element, position, array):
    last = len(array) - 1
    if position > len(array) or position < 0:
        print("position does not exist")
    else:
        array.append('_')
        for q in range(len(array)-2, position-1, -1):
            array[q+1] = array[q]
        array[position] = element
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...