我有一个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
我想要的是代码,如果未找到匹配项,则打印消息“此出版物不存在”。但是,现在发生的是,每次比较一个项目时,代码都会打印该句子。
我知道为什么会这样,但是我不知道如何解决。解决此问题的最佳方法是什么?
编辑:将列表名称从“列表”更改为“我的列表”。不好意思,我实际上没有在代码中称呼它,我只是在上载问题时更改了名称,以便于理解。
答案 0 :(得分:3)
您需要一个布尔值:
i = 0
found = False
while i <= len(list):
if list[i] == userinput:
del list[i]
print("Entry Removed!")
found = True
i += 1
if not found:
print("This publication does not exist")
一些不相关的建议
list
用于变量在迭代同一列表时不要从列表中删除项目。您可以反向遍历列表:
i = len(li) - 1
found = False
while i >= 0:
if li[i] == userinput:
del li[i]
print("Entry Removed!")
found = True
i -= 1
if not found:
print("This publication does not exist")
答案 1 :(得分:0)
Python的while循环具有else子句,如果循环完成而没有中断,则执行else子句:
但是让我们用另一种方式来避免更改正在循环的列表:
list_ = [
["a", "b", "c"],
["d", "f", "g"],
["d", "f", "g"],
["h", "i", "j"]
]
userinput = ["z", "z", "z"]
new_list = [x for x in list_ if x != userinput]
if list_ == new_list:
print("This publication does not exist")
# This publication does not exist
请勿覆盖list
关键字。我将其更改为list_
,但您可以将其更改为对您的应用程序更有意义的内容。