作为向 StackOverflow 提出此类问题的一般原则,您应该始终包含示例输入和输出——显示发生了什么以及您期望发生什么。
在这种情况下,我相信您的代码存在两个三个问题:
编辑:第三,但可能最重要的是,看看glglgl's answer。如果您实施我在下面描述的两个修复程序,您仍然会遇到一个问题:您的代码不一定会删除您要删除的所有项目,因为它会跳过一些项目。
首先,你说alist[i]
,它抓住了alist
at index的元素i
。但是说已经for i in alist
成为i
列表中的连续元素。例子:
mylist = [1, 2, 4]
for i in mylist:
print(i)
会给你输出:
1
2
4
如果你改为这样说(就像你写的那样)
mylist = [1, 2, 4]
for i in mylist:
print(mylist[i])
它不会像您期望的那样工作,因为您会在索引 1 处获取元素,在索引 2 处获取元素,然后尝试在索引 4 处获取元素,但这不存在。你会得到这样的东西:
2
4
IndexError: list index out of range
其次,您删除元素的语法是错误的。您应该使用alist.remove(i)
而不是alist.remove[i]
. 你想调用一个函数,所以你使用括号。方括号用于索引和切片。