【问题标题】:Python: sub list of items depending on a certain value of the items, e.g. booleanPython:项目的子列表取决于项目的某个值,例如布尔值
【发布时间】:2011-10-09 07:19:39
【问题描述】:

我有一个类似对象的列表,其中一些设置了一定的值,这里更具体地说是一个布尔标志:

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

在 Python 中是否有一种轻松的方法来获取其值设置为特定值的项目的子列表,这里是 TrueFalse

【问题讨论】:

    标签: python list boolean sublist


    【解决方案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 的投票比你的多,但我想知道在某些情况下你的投票是否有优势......如果是这样,我建议你在回答中提到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2017-06-23
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多