我有一個代碼樣式問題,我正在尋找我在下面寫的pythonic實現。最後一次迭代後關閉範圍的Pythonic方式
我發佈的(簡化)代碼迭代了一個序列並返回範圍。每個範圍以特定條件開始和結束。範圍不能重疊。我使用變量active
來跟蹤是否已經找到範圍的開始。如果在序列結束時有效範圍尚未關閉,則應添加(有input_length
作爲結束索引)
下面的代碼按預期工作,但我不喜歡這樣一個事實,即我必須編寫代碼將範圍追加到結果列表兩次。在我遇到的實際問題中,這個塊更長,我不想在for循環之後再次寫它。
你有什麼建議可以改善嗎?
謝謝!
input_length = 100
results = []
active = False
start = None
for i in range(input_length):
condition = i % 9 == 0
if not active and condition:
active = True
start = i
condition2 = i % 13 == 0
if active and condition2:
active = False
# do some additional calculations...
results.append((start, i))
if active:
# do some additional calculations...
results.append((start, input_length))
print(active)
print(results)
需要審查/改進的工作代碼更適合[codereview](http://codereview.stackexchange.com/)。 – syntonym