python - 求生成器的长度或是否有元素
问题描述
您好,我有如下代码:
isEmpty = True
for itrat in generator():
isEmpty = False
break
if isEmpty:
doSomething()
else:
dosomethingelse()
测试我在Generator中是否有 One 或 mode 元素,或者如果生成器长度 > 0做某事,但我想要一个更清晰的代码来显示我们的Generator 是否有元素,我不需要获取生成器结果的所有值,只要知道它有元素吗?
解决方案
如果不消耗至少一项,就无法确定通用迭代器是否为空。一种解决方法可以按照以下方式进行:
from itertools import chain
def empty_check(gen):
try:
x = next(gen)
return chain([x], gen), False
except StopIteration:
return gen, True
gen, empty = empty_check(generator())
if empty:
# do something
else:
# do something else with still complete gen
推荐阅读
- python - 如何使用 python flask 解决未读结果错误
- javascript - 在反应中更新新的 document.body.offsetHeight
- javascript - 针对特定文本框架的 InDesign 脚本
- html - 在嵌套表中对齐 td
- docker - 启动时出现nginx docker问题
- clojure - 如何将函数变量绑定到 Clojure 中的当前执行范围?
- vba - 当宏包含许多子时,如何将宏应用于多个 excel 文件?
- load-balancing - 如何使用 Elasticbeanstalk 和 Cloudfront 构建全球应用程序?
- reactjs - 无法使用带有 react.js 和 axios 的 map 循环遍历数组
- javascript - 将 DataView 与 nodejs 缓冲区一起使用