【发布时间】:2018-12-21 04:07:52
【问题描述】:
我有一个遍历二维列表的 while 循环,以查看它是否可以找到类似的提交以将其删除。
i=0
while i <= len(my_list):
if my_list[i] == userinput:
del my_list[i]
print("Entry Removed!")
else:
print("This publication does not exist")
i+=1
如果没有找到匹配项,我想要代码打印消息“此出版物不存在”。但是,现在发生的情况是,每次比较一个项目时,代码都会打印该句子。
我明白为什么会发生这种情况,但我不知道如何解决它。解决此问题的最佳方法是什么?
编辑:将列表名称从“list”更改为“my_list”。我的不好,我在代码中实际上并没有这么称呼它,我只是在上传问题时更改了名称,以便于理解。
【问题讨论】:
-
您在迭代列表时从列表中删除。这被认为是不好的做法。
-
...基本上是因为它会跳过项目并导致索引错误。
-
当您删除一个列表元素时,其余元素会向下移动一个。例如。如果您删除 x[2],那么 x[3] 将成为新的 x[2],x[4] 将成为 x[3],等等。更容易一次创建一个新列表,忽略那些您不需要。对了,不要用
list作为变量名,它会屏蔽系统类list。 -
我知道你已经接受了这个答案,但是用户输入的例子是什么?是列表吗?
-
@Zev yes,
userinput是一个列表。
标签: python python-3.x loops if-statement while-loop