【发布时间】: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 中的意思。不幸的是,这意味着一些不同的东西。