我有一个代码样式问题,我正在寻找我在下面写的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