如何检查循环是否从未运行过?
这在我看来似乎太复杂了:
x = _empty = object()
for x in data:
... # process x
if x is _empty:
raise ValueError("Empty data iterable: {!r:100}".format(data))
有没有更简单的解决方案?
上面的解决方案来自curiousefficiency.org
更新资料
数据可以包含None
个项目。
数据是一个迭代器,我不想重复使用它。
python大神给出的解决方案
“永不运行”是指data
没有元素吗?
如果是这样,最简单的解决方案是在运行循环之前检查它:
if not data:
raise Exception('Empty iterable')
for x in data:
...
但是,如下面的评论中所述,它不适用于某些可迭代对象,例如文件,生成器等,因此应谨慎应用。