2011-07-20 82 views
2

我也有類似的對象的列表,其中一些有一定值而定,這裏更具體的布爾標誌:Python:項目的子列表,取決於項目的某個值,例如布爾

myList = [WhatEver(..., True, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), ...] 

有Python中的便捷方式,以項目的一個子表,其價值設置爲特定值,這裏是TrueFalse

回答

7

是的,有。 List comprehensions是一個很好的適合這樣的:

[item for item in myList if item.flag] 
[item for item in myList if not item.flag] 

其中flag是要檢查WhatEver的字段的名稱。

+0

只是要超清晰,這將返回'flag'設置爲TRUE;或者不評估爲'FALSE'任何其他值(空箱中的所有項目,零)。 – agf

0

使用filter

filtered_list = filter(lambda item: item.flag, myList) 
+0

事實上,Python文檔甚至會說'如果函數不是None並且[item中的item在iterable中,如果item]如果函數是None,那麼過濾器(函數,可迭代)等價於[item中item的可迭代if(function) 「。 @NPE的比你的更有價值,但我想知道你的是否在某些情況下是有利的......如果是這樣,我建議你在你的答案中提到這一點。 –

相關問題