【问题标题】:Most elegant way to branch if a generator is empty in Python [duplicate]如果生成器在 Python 中为空,则最优雅的分支方式 [重复]
【发布时间】:2014-10-09 13:56:08
【问题描述】:

我在 Python 中有一个生成器,如果它有项目,我想循环它,如果它是空的,我想执行不同的操作。类似的东西

if generator is empty:
    perform some action
else:
    for item in generator:
        perform some actions

我知道如果不遍历它就无法判断生成器是否为空,但似乎仍然应该有一些不错的优雅方式来执行此逻辑。我能想到的最好的是类似于https://stackoverflow.com/a/664239/161801 的东西,这似乎很不雅,我猜是因为它必须将生成器的第一个元素与其他元素分开处理。

【问题讨论】:

  • 您可以遍历所有项目并在循环内设置一个标志(“有一个项目”),如果未设置标志,则执行备用操作
  • @njzk2 我显然知道这个问题(我链接到它),但我认为它是不同的。这个问题是问是否有可能在不迭代的情况下知道生成器是否为空。我已经知道由于生成器的工作方式,这是不可能的。我要求一种干净的方式来解决这个限制。
  • @asmeurer 在链接的问题中有几个不同的答案和方法 - 你对它们有什么问题?这似乎不是一个单独的问题。
  • @asmeurer 恐怕你链接到的答案是最好的
  • 这是我最初认为(有时也希望)for else 在 Python 中的意思。不幸的是,这意味着一些不同的东西。

标签: python generator


【解决方案1】:

如果生成器不为空,只需设置一个标志:

isGeneratorEmpty = True
for item in generator:
    isGeneratorEmpty = False
    perform some actions

if isGeneratorEmpty:
    perform some actions

【讨论】:

  • @admdrew 逻辑很简单(在 cmets 中有人提出了同样的建议),jh314 可能是独立提出的。
猜你喜欢
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
相关资源
最近更新 更多