小编Ham*_*mad的帖子

查找列表中差值为1的元素

假设我有一个这样的列表:

lst = [1, 3, 4, 5, 8, 10, 14, 20, 21, 22, 23, 40, 47, 48] 
Run Code Online (Sandbox Code Playgroud)

我需要提取相差为一的元素。我需要最终输出如下所示:

[[3, 4, 5], [20, 21, 22, 23], [47, 48]] 
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止针对这个特定问题所做的尝试,它已经取得了一些进展,但没有达到我需要的 100%:

final_list = []
for i in range(len(lst)):
    sub_list = []
    for ii in range(i, len(lst)):
        prev_num = lst[ii-1]
        if lst[ii] - prev_num == 1:
#             print(lst[ii], end=",")
            sub_array.append(lst[ii])
        else:
            break
    if sub_list:
        final_list.append(sub_list)
print(final_list)
Run Code Online (Sandbox Code Playgroud)

输出:

[[4, 5], [5], [21, 22, 23], [22, 23], [23], [48]]
Run Code Online (Sandbox Code Playgroud)

python list

3
推荐指数
1
解决办法
614
查看次数

标签 统计

list ×1

python ×1