如何把python列表连续的数值的区间计算出来
时间: 2024-03-25 12:41:16 浏览: 51
如果一个Python列表中的数值连续,我们可以计算出这些连续数值的区间。具体实现方法如下:
```python
def consecutive_intervals(lst):
intervals = []
if len(lst) <= 1:
return intervals
lst.sort()
start = lst[0]
end = lst[0]
for i in range(1, len(lst)):
if lst[i] - lst[i-1] == 1:
end = lst[i]
else:
intervals.append((start, end))
start = lst[i]
end = lst[i]
intervals.append((start, end))
return intervals
```
以上代码中,首先判断列表长度是否小于等于1,如果是,则直接返回空列表。接着对列表进行排序,并初始化起始区间的起点和终点为列表的第一个元素。然后遍历列表中的元素,如果相邻元素之间的差值为1,则更新区间的终点,否则将当前区间加入到结果列表intervals中,并重新初始化起始区间的起点和终点。最后还需要将最后一个区间加入到结果列表中。最终返回结果列表intervals。
调用这个函数,可以像下面这样:
```python
lst = [1, 2, 3, 4, 5, 7, 8, 10, 11]
print(consecutive_intervals(lst)) # [(1, 5), (7, 8), (10, 11)]
lst = [1, 2, 4, 5, 6, 8, 10, 11]
print(consecutive_intervals(lst)) # [(1, 2), (4, 6), (8, 8), (10, 11)]
```
以上代码输出结果分别为[(1, 5), (7, 8), (10, 11)]和[(1, 2), (4, 6), (8, 8), (10, 11)],表示第一个列表中连续的数值区间为[(1, 5), (7, 8), (10, 11)],而第二个列表中连续的数值区间为[(1, 2), (4, 6), (8, 8), (10, 11)]。
阅读全文