Python 3.8:使用append()时发生IndexError

问题描述 投票:0回答:2

我做了一个小的“控制台”,用split()分割了命令。我将“命令”(input()中的第一个“单词”)与第一个单词之后的“参数”分开。这是生成错误的代码:

cmdCompl = input(prompt).strip().split()
cmdRaw = cmdCompl[0]
args = addArgsToList(cmdCompl)

[addArgsToList()功能:

def addArgsToList(lst=[]):
    newList = []
    for i in range(len(lst)):
        newList.append(lst[i+1])
    return newList

我尝试将cmdRaw之后的每个单词添加到args返回的名为addArgsToList()的列表中。但是我得到的却是:

Welcome to the test console!

Type help or ? for a list of commands

testconsole >>> help
Traceback (most recent call last):
  File "testconsole.py", line 25, in <module>
    args = addArgsToList(cmdCompl)
  File "testconsole.py", line 15, in addArgsToList
    newList.append(lst[i+1])
IndexError: list index out of range

我不知道为什么得到IndexError,因为据我所知,newList可以动态分配。

有帮助吗?

python list console append index-error
2个回答
1
投票

[您在做时:

for i in range(len(lst)):
    newList.append(lst[i+1])

最后一次迭代尝试访问超出范围的lst处的len(lst)


0
投票

您应该这样做:

def addArgsToList(lst=[]):
    newList = []
    for i in range(len(lst)):
        newList.append(lst[i])
    return newList

如果您只是尝试复制新列表中的元素,请执行以下操作:

newList = lst.copy()
© www.soinside.com 2019 - 2024. All rights reserved.