0
我有一个列表,其中每个元素都是一只乌龟,并试图让一只乌龟从列表中移除并隐藏。到目前为止,我曾尝试:从名单中删除一只乌龟
lis[lis.index(food)].ht()
lis[lis.index(food)].clear()
lis.remove(lis.index(food))
然而,当我运行它,我得到一个错误,指出该元素是找不到的。
我有一个列表,其中每个元素都是一只乌龟,并试图让一只乌龟从列表中移除并隐藏。到目前为止,我曾尝试:从名单中删除一只乌龟
lis[lis.index(food)].ht()
lis[lis.index(food)].clear()
lis.remove(lis.index(food))
然而,当我运行它,我得到一个错误,指出该元素是找不到的。
如果lis
是一个海龟列表和food
是一只乌龟然后使用lis.remove(food)
。您收到的错误消息是因为lis.index(food)
是int
(不是乌龟),并且该int不在您的列表中。
如果你打算做大量的移除工作,海龟字典可能比列表更自然。从字典中删除是O(1)
,但从列表中删除是O(n)
。作为一般的经验法则,如果您发现自己反复从列表中间移除(和/或插入)项目,您应该问问自己是否有更好的方法来实现您的目标。
这是在迭代遍历列表的for循环中。食物是我所列举的每一个元素的引用?这会继续吗? – rbhog
在迭代列表时使用'.remove()'通常是一个糟糕的主意。事实上,使用每个'remove()'缩短列表可以导致迭代以反直觉的方式跳过元素。无论如何,如果你还有其他问题,你应该将它作为另一个问题发布,最好是一个[mvce] –