【问题标题】:The if statement in a list comprehension列表推导中的 if 语句
【发布时间】:2014-05-10 06:58:30
【问题描述】:
>>> row = [1,2,3,4,"--"]
>>> row = [cell.replace("--","hello") for cell in row if cell == "--"]
>>> row
['hello']

如何通过列表理解获得[1,2,3,4,"hello"]

【问题讨论】:

    标签: python if-statement list-comprehension


    【解决方案1】:

    您可以改用conditional expression

    ["hello" if cell == "--" else cell for cell in row]
    

    这是左侧元素生成表达式的一部分,而不是列表解析语法本身,其中if 语句充当过滤器。

    条件表达式使用形式true_expression if test_expression else false_expression;它总是产生一个值。

    我稍微简化了表达;如果你用"hello"替换"--",你也可以直接返回"hello"

    【讨论】:

      【解决方案2】:

      [cell.replace("--","hello") if cell=="--" else cell for cell in row]

      当在for 末尾使用if 时,它会限制考虑哪些项目,因此该版本将只返回一项,因为源列表中只有一项符合条件。

      同样在这种情况下您不需要使用replace,您可以直接使用"hello" if cell=="--",但如果您有多个要操作的项目,则可以使用此表单。

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        相关资源
        最近更新 更多