2017-06-03 78 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] –