考慮以下循環:循環,「具有n項來處理,但只有n-1個更新步驟」
marker_stream = 0
for character in input_file:
if character != ',':
marker_stream |= 1
marker_stream <<= 1
對於每個字符在input_file_contents
,該循環做一個處理步驟中,存儲所述處理的結果步驟(0
或1
位),然後將marker_stream
移位一個位置以準備下一次迭代。
問題出在這裏:我想處理輸入文件中的每個字符,但我只想移動marker_stream
number of characters in the input file - 1
次。上面的循環多次移動marker_stream
。
現在,我知道我可以在for循環後添加marker_stream >>= 1
,或者我可以保留一些標誌,表明我們當前正在處理的角色是否是文件中的最後一個角色,但這些解決方案都不是大。標誌解決方案涉及標誌(yuck),如果處理循環較長,額外的線路解決方案可能會造成混淆。
我正在尋找一個更優雅的解決方案來解決這個問題,更普遍的是「我有n個項目要處理,但有一個更新步驟我只想運行n-1次」問題。