以下是一个示例代码,用于从有序表中制作间隔的按值的变化:
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的列进行分组
下一篇:按值的范围将数据框绘制成箱线图。