<分区> 分区>
我仍在学习 python 的基础知识,我刚刚花了一段时间阅读如何在 python 中从 for 循环中的列表中删除一个项目。我读过的所有内容都暗示了执行此操作的复杂方法,并且他们说您无法在迭代时从列表中删除项目。但是......这似乎有效:
class Object():
def __init__(self):
self.y = 0
object_list = [Object(), Object(), Object()]
for thing in object_list:
thing.y += 1
if thing.y > 10:
object_list.remove(thing)
为什么这行得通,而其他人却说行不通并编写了复杂的解决方法?是因为不允许在 Python 2 中执行此操作但可以在 Python 3 中执行此操作吗?
这是正确的方法吗?它会按我想要的那样工作还是容易出现错误?如果我打算删除项目,是否建议以相反的顺序遍历列表?
很抱歉,如果之前已经回答过这个问题,但是很难知道哪些资源指的是什么,因为它们都在标签中说“python”(至少,我一直在阅读的那些,也许那是因为所有的我读过的是 python 2?)
谢谢!
编辑:
抱歉,有几个复制和粘贴错误...我已修复...
编辑:
我一直在观看 Raymond Hettinger 的另一个视频...他提到了一种在使用 dict.keys() 迭代字典的同时从字典中删除项目的方法。像这样的东西:
d = {'text': 'moreText', 'other': 'otherText', 'blah': 'moreBlah'}
for k in d.keys():
if k.startswith('o'):
del d[k]
显然,使用键可以在迭代时安全地删除项目。列表有等价物吗?如果有的话,我可以向后遍历列表并安全地删除项目
