以下是一个示例代码,用于从有序表中制作间隔的按值的变化:
def create_interval_list(sorted_list):
interval_list = []
start = None
end = None
for i in range(len(sorted_list)):
if start is None:
start = sorted_list[i]
end = sorted_list[i]
elif sorted_list[i] == end + 1:
end = sorted_list[i]
else:
interval_list.append((start, end))
start = sorted_list[i]
end = sorted_list[i]
# 添加最后一个间隔
interval_list.append((start, end))
return interval_list
# 测试
sorted_list = [1, 2, 3, 5, 6, 9, 10, 11, 12, 15]
interval_list = create_interval_list(sorted_list)
print(interval_list)
输出结果为:
[(1, 3), (5, 6), (9, 12), (15, 15)]
该示例代码中,create_interval_list
函数接受一个有序表 sorted_list
作为输入,并返回一个由间隔组成的列表 interval_list
。在函数内部,我们使用了两个变量 start
和 end
来跟踪当前间隔的开始和结束值。
我们遍历有序表,如果 start
为 None
,表示开始一个新的间隔,我们将 start
和 end
都设置为当前值。如果当前值 sorted_list[i]
与 end
的下一个值相差为 1,说明间隔仍在延续,我们更新 end
的值。如果当前值与 end
的下一个值不相差为 1,说明间隔已经结束,我们将当前间隔 (start, end)
添加到 interval_list
中,并更新 start
和 end
的值。
最后,我们需要单独处理最后一个间隔,因为在循环中无法处理到它。我们将最后一个间隔 (start, end)
添加到 interval_list
中。
在示例中,有序表 [1, 2, 3, 5, 6, 9, 10, 11, 12, 15]
经过处理后,生成的间隔列表为 [(1, 3), (5, 6), (9, 12), (15, 15)]
。
上一篇:按值大于0的列进行分组
下一篇:按值的范围将数据框绘制成箱线图。