如何检查循环是否从未运行过? - python

如何检查循环是否从未运行过?

这在我看来似乎太复杂了:

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:
    ...

但是,如下面的评论中所述,它不适用于某些可迭代对象,例如文件,生成器等,因此应谨慎应用。