遇到了一些看起来很奇怪的事情。我使用一组列表来保存一些数据,如果其中满足条件,我想从每个列表中删除这些数据。在
这就是我目前所拥有的。它可以工作,并从第一个结果中删除所有内容,但当有多个满足条件时,它就会离开它们。在
agecounter = 0
for matches in List1:
if Condition Met:
List1.pop(agecounter)
List2.pop(agecounter)
List3.pop(agecounter)
agecounter = agecounter + 1
如果我在这些列表中有10个条目,并且有3个满足条件,它将删除第一个条目。我甚至可以打印符合条件的其他结果的数据。它很好地将它打印到控制台,没有抛出异常,但似乎只是忽略了pop。在
我可能遗漏了一些很明显的东西,但没有理由不起作用,是吗?在
迭代列表时从列表中删除元素不是一个好主意。您可能应该迭代列表的副本
一个完整的例子来说明这个问题将有助于得到更好的答案。在
话虽如此,波普可能并不像你所期望的那样工作。它不会从列表中删除agecounter。它正在移除agecounter位置的项目。在
当你越走越高,你越有可能越走越远,抛出一个例外。在
^{pr2}$添加到@StephenTG的答案中,您可能希望复制数据,而不是在迭代期间修改它。您可以使用列表理解来“过滤”它:
按相反的顺序遍历列表
相关问题 更多 >
编程相关推荐