2012-02-04 70 views
5

我有一個列表,我保存由特定類創建的對象。OOP python - 從列表中刪除類實例

我想知道,因爲我無法解決這個問題,我該如何從列表中刪除類的實例?

這應該基於知道對象的一個​​屬性而發生。

+1

去除他們應該添加一個你無法工作的代碼的例子,也應該接受最能幫助你解決問題的答案,並提高有用的答案。 – 2012-02-04 13:20:24

+0

好的,謝謝。 :) – 2012-02-04 16:19:18

+0

不客氣,你可能也想遵循這個[問題和答案的風格指南](http://meta.stackexchange.com/a/18616/177799)中的一些建議。更好的問題會帶來更好的答案。 – 2012-02-04 18:48:50

回答

11

迭代通過列表中,找到對象和它的位置,然後將其刪除:

for i, o in enumerate(obj_list): 
    if o.attr == known_value: 
     del obj_list[i] 
     break 
+1

有一個錯字:'='而不是'=='。 – 2012-02-04 13:04:16

+0

@RikPoggi謝謝。更正它。 – WolframH 2012-02-04 13:46:39

3

你可以使用列表理解:

thelist = [item for item in thelist if item.attribute != somevalue] 

這將移除與item.attribute == somevalue所有項目。

如果你希望只刪除一個這樣的項目,然後用WolframH's solution

+0

使用'filter'函數也可以,對不對? – Divya 2012-02-04 12:38:29

+0

過濾器可以像列表理解一樣工作,但通常調用'filter'比列表理解要慢。 – unutbu 2012-02-04 12:50:06

1

您可能已經將它們存儲在一個字典,並通過下一次你的名字

di = {"test" : my_instance()} 
del di['test']