我正在尝试实现一个将insert()插入数组的函数

时间:2020-02-11 20:47:30

标签: python list

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 :(得分:0)

您需要扩展列表,否则您将分配给不存在的索引。
另外,循环

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

答案 1 :(得分:0)

正如其他人指出的那样,您不能通过分配一个不存在的列表位置来做到这一点。您必须使用使列表变大的操作:appendextend的某种形式,其中包括+运算符。这是最容易用切片完成的,例如

array = array[:position] + [element] + array[position:]