2017-06-03 98 views
0

我有一个列表,其中每个元素都是一只乌龟,并试图让一只乌龟从列表中移除并隐藏。到目前为止,我曾尝试:从名单中删除一只乌龟

lis[lis.index(food)].ht() 
lis[lis.index(food)].clear() 
lis.remove(lis.index(food)) 

然而,当我运行它,我得到一个错误,指出该元素是找不到的。

回答

0

如果lis是一个海龟列表和food是一只乌龟然后使用lis.remove(food)。您收到的错误消息是因为lis.index(food)int(不是乌龟),并且该int不在您的列表中。

如果你打算做大量的移除工作,海龟字典可能比列表更自然。从字典中删除是O(1),但从列表中删除是O(n)。作为一般的经验法则,如果您发现自己反复从列表中间移除(和/或插入)项目,您应该问问自己是否有更好的方法来实现您的目标。

+0

这是在迭代遍历列表的for循环中。食物是我所列举的每一个元素的引用?这会继续吗? – rbhog

+0

在迭代列表时使用'.remove()'通常是一个糟糕的主意。事实上,使用每个'remove()'缩短列表可以导致迭代以反直觉的方式跳过元素。无论如何,如果你还有其他问题,你应该将它作为另一个问题发布,最好是一个[mvce] –