检测空生成器初始化
在Python中,生成器是一次产生一个值的迭代器。因此,从一开始就确定发电机是否为空可能是一个挑战。与列表或元组不同,生成器没有固有的长度或 isEmpty 方法。
解决挑战
为了解决这个问题,一种常见的方法是使用辅助函数查看生成器中的第一个值而不消耗它。如果 peek 函数返回 None,则表明生成器没有项目。
建议实现
一个名为 peek 的函数可以按如下方式实现:
def peek(iterable):
try:
first = next(iterable)
except StopIteration:
return None
return first, itertools.chain([first], iterable)
使用 Peek 判断生成器是否为空
要判断生成器是否为空,可以使用 peek按以下方式运行:
res = peek(mysequence)
if res is None:
# sequence is empty. Do stuff.
else:
first, mysequence = res
# Do something with first, maybe?
# Then iterate over the sequence:
for element in mysequence:
# etc.
在此示例中,如果生成器为空,则 peek 函数将返回 None 并且 if 条件将为 true。否则,将执行 else 块。通过利用这种方法,您可以有效地检测生成器从一开始就为空。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3