我试图实现一个函数,将()插入数组中

2024-10-02 16:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: orlenifdefnotpositionrangeelement
2条回答

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

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

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

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

相关问题 更多 >