偵測空產生器初始化
在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