Python:项目的子列表取决于项目的某个值,例如布尔值
Posted
技术标签:
【中文标题】Python:项目的子列表取决于项目的某个值,例如布尔值【英文标题】:Python: sub list of items depending on a certain value of the items, e.g. boolean 【发布时间】:2011-10-09 07:19:39 【问题描述】:我有一个类似对象的列表,其中一些设置了一定的值,这里更具体地说是一个布尔标志:
myList = [WhatEver(..., True, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), ...]
在 Python 中是否有一种轻松的方法来获取其值设置为特定值的项目的子列表,这里是 True
或 False
?
【问题讨论】:
【参考方案1】:是的,有。 List comprehensions 非常适合:
[item for item in myList if item.flag]
[item for item in myList if not item.flag]
其中flag
是您要检查的WhatEver
字段的名称。
【讨论】:
为了清楚起见,这将返回所有flag
设置为 True
或任何其他不评估为 False
的值(空容器,零)。
【参考方案2】:
使用filter
:
filtered_list = filter(lambda item: item.flag, myList)
【讨论】:
确实——Python 文档甚至说'注意 filter(function, iterable) 等价于 [item for item in iterable if function(item)] if function is not None and [item for item in iterable如果项目] 如果函数为无。 @npe 的投票比你的多,但我想知道在某些情况下你的投票是否有优势......如果是这样,我建议你在回答中提到这一点。以上是关于Python:项目的子列表取决于项目的某个值,例如布尔值的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中,如何找到不是某个值的列表中第一项的索引?