python判断列表里面相邻的数值是否连续并分块

883 阅读1分钟

需求复现: 现在有这样一个大小排好序的列表

data = data = [1, 2, 3, 4, 6, 7, 8, 10, 11, 14, 15, 18, 19, 20, 22]

需要判断列表里的相邻的元素是否连续,连续的判断为:左边的数值+1=右边的数值

需要输出的结果为:

[[1, 2, 3, 4], [6, 7, 8], [10, 11], [14, 15], [18, 19, 20], [22]]

解决思路是判断相邻元素的差值是否等于1

直接上代码

data = [1, 2, 3, 4, 6, 7, 8, 10, 11, 14, 15, 18, 19, 20, 22]

res = []
for i in range(len(data)):
    if not res:
        res.append([data[i]])
    elif data[i - 1] + 1 == data[i]:
        res[-1].append(data[i])
    else:
        res.append([data[i]])

print(res)

out:
[[1, 2, 3, 4], [6, 7, 8], [10, 11], [14, 15], [18, 19, 20], [22]]