Python 3.8: 使用 append() 时出现 IndexError

Python 3.8: IndexError when using append()

我做了一点 "console" 将命令与 split() 分开。我将 "command"(input() 中的第一个 "word")与第一个词之后的 "arguments" 分开。这是生成错误的代码:

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 之后的每个单词添加到 addArgsToList() 返回的名为 args 的列表中。但我得到的是:

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 可以动态分配。

有什么帮助吗?

当你在做的时候:

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

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

你应该这样做:

如果您希望避免追加第一个元素

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

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

newList = lst[1:].copy()