【问题标题】:Is there an `else` for for comprehensions [duplicate]是否有用于理解的“else”[重复]
【发布时间】:2018-07-06 20:31:48
【问题描述】:

我有以下代码:

[mc.split('$', 1)[-1] for mc in marketCapsUnclean if 'B' in mc]

其中的转换如下:

['blabla $10M', 'blabla $10B']

进入

['$10B']

我想为未通过if 测试的元素获取一个值,如下所示:

['N/A', '$10B']

我想做这样的事情:

[mc.split('$', 1)[-1] for mc in marketCapsUnclean if 'B' in mc else 'N/A']

但这不是合法的语法。

那么有没有办法通过 for 理解来实现类似的东西?

【问题讨论】:

  • 不,因为if 是一个过滤器。包含或不包含它,一个布尔选项。
  • 您没有过滤。您正在为每个项目生成不同的值,因此您希望在值表达式中使用 条件表达式[mc.split('$', 1)[-1] if 'B' in mc else 'N/A' for mc in marketCapsUnclean]。查看副本。

标签: python


【解决方案1】:

在循环结构之前的if之后添加带有值的else条件:

[mc.split('$', 1)[-1] if 'B' in mc else 'N/A' for mc in marketCapsUnclean ]

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2011-03-17
    • 2020-02-29
    • 1970-01-01
    • 2011-02-26
    • 2017-09-09
    • 2011-05-23
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多