【问题标题】:Ignore an element while building list in python在python中构建列表时忽略一个元素
【发布时间】:2011-04-23 10:45:04
【问题描述】:

我需要使用[f(char) for char in string] 语法从python 中的字符串构建一个列表,并且我希望能够忽略(不插入列表中)等于None 的f(x) 值.

我该怎么做?

【问题讨论】:

    标签: python list syntactic-sugar


    【解决方案1】:

    我们可以创建一个“子查询”。

    [r for r in (f(char) for char in string) if r is not None]
    

    如果您也允许忽略所有 False 值(0、False、None 等),则可以使用 filter

    filter(None, (f(char) for char in string) )
    # or, using itertools.imap,
    filter(None, imap(f, string))
    

    【讨论】:

    • 我喜欢第一个,谢谢!非常干净,只需构建一个可迭代作为中间体。我一直在做两行,或者[f(x) for x in l if f(x) is not None],不必要地执行了两次操作。
    • @luke-davis,如果你使用一种叫做 memoization 的东西,那不是真的。但这仍然不是优雅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多