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 中是否有一种轻松的方法来获取其值设置为特定值的项目的子列表,这里是 TrueFalse

【问题讨论】:

【参考方案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 中返回 x 个周围项目

如何使用 for 循环将列表中的子值相互比较?

在 Python 中,如何找到不是某个值的列表中第一项的索引?

创建和管理STL列表的子列表

Python 二维列表 如何获取有关某数据最大/小值对应的子列表?

Selenium Python:选择一个类中的所有项目并将它们放入列表中?