【问题标题】:Python For Loop list comprehensionPython For 循环列表理解
【发布时间】:2015-08-02 08:54:10
【问题描述】:

我正在 python 列表理解中寻找以下循环的可能等效项。

    for foo in foos:
        if foo.text == expected_text
            return foo
    return []

类似的东西。

found_foo = [foo for foo in foos if foo.text == expected_text]

如果这可能使用列表推导?

【问题讨论】:

  • 您返回一个foo 还是一个空列表?这通常不是一个好的设计
  • 我很困惑如何在 foo_found 被计算时跳过/终止循环。
  • 是的found_foo实际上是一个长度== 1的列表,当没有找到匹配时返回[]的长度

标签: python for-loop list-comprehension


【解决方案1】:

您可以使用generator expressionnext

return next((foo for foo in foos if foo.text == expected_text), None)

Next 将返回第一个满足条件的 Yield 项目。

如果没有匹配项,next 将返回默认值None

【讨论】:

  • 是的。如果找到元素,它会避免沿着整个迭代运行。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
相关资源
最近更新 更多