【发布时间】:2016-11-17 11:20:25
【问题描述】:
我有一个代码样式问题,我正在寻找我在下面写的内容的 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。
标签: python python-3.x iteration