我有一个代码风格问题,并且正在寻求一个pythonic实现我下面的内容。
发布的(简化的)代码遍历序列并返回范围。每个范围都以特定条件开始和结束。范围不能重叠。我使用变量 “active” 来跟踪是否已经找到了范围的起始位置。如果在序列结束时活动范围尚未关闭,则应添加该范围(以 input_length 作为结束索引)。
下面的代码按预期工作,但我不喜欢事实上两次编写将范围附加到结果列表的代码。在我的真正问题中,这个块要长得多,我不想在 for 循环后再写一次。
你有什么建议如何改进这个问题吗?
谢谢!
发布的(简化的)代码遍历序列并返回范围。每个范围都以特定条件开始和结束。范围不能重叠。我使用变量 “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)