现在在我的一个课堂实验作业中,我使用了以下代码:
x=0
for x in reversed(range(len(list_after_removal))):
if guess in list_after_removal[x]:
list_after_removal.pop(x)
x+=1
else:
x+=1
我的问题是,如果用户猜到了所有元音或者其他字母的组合,列表就会变成空的,我会得到一个错误。最后,我希望程序在实际删除单词之前,先看看列表的长度。你知道吗
我试过这样的方法:
x=0
for x in reversed(range(len(list_after_removal))):
if guess in list_after_removal[x] and len(list_after_removal.pop(x))>0:
list_after_removal.pop(x)
x+=1
else:
x+=1
但这会导致pop索引超出范围的错误。我真的不知道如何去实施这个。你知道吗
这里的问题是,您在迭代列表时正在编辑列表(缩短列表)。例如:
移除后的检查列表[0]:这是'foo',我们找到了一个匹配项,所以弹出它,使移除后的列表等于[“bar”]
删除后的检查列表[1]:现在列表中只有一项,这将导致索引器错误!你知道吗
尝试以下操作而不是for循环:
如果lambda函数太混乱,那么这也适用:
您应该从条件中删除
pop
,也不需要len
,因为空列表的bool值是False
:所以你可以:
你两次从名单上跳出来!一次在
if
条件下,第二次在下一行。你知道吗重做条件如下:
你知道在你从列表中
pop
得到一个列表后,它会短一个项目,而不需要在这个条件下实际执行。你知道吗相关问题 更多 >
编程相关推荐