我有一个类似对象的列表,其中一些有一定的值集,这里更具体地说是一个布尔标志:
myList = [WhatEver(..., True, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), ...]
在Python中是否有一种无痛的方法来获取其值设置为特定值的项的子列表,这里是True
还是False
?
答案 0 :(得分:7)
是的,有。 List comprehensions非常适合这个:
[item for item in myList if item.flag]
[item for item in myList if not item.flag]
其中flag
是您要检查的WhatEver
字段的名称。
答案 1 :(得分:1)
使用filter
:
filtered_list = filter(lambda item: item.flag, myList)