如何从列表中挑选连续数字

2022-03-26 00:00:00 python python-3.x slice

问题描述

我有一个列表,其中实际上包含另一个列表的索引。因此,我想从该列表中挑选出连续的数字

index_list=[3,4,8,9,35,36,37]

我希望其输出为

[3:4], [8:9], [35:37]

---------------------MOTIVE:---------------------

我还有另一个单词主列表,它有80个单词。

  master_list=['was,'it','to,'go,'I'.........] 

因此,连续的索引将帮助我从MASTER_LIST中挑选出所需的单词

master_list[3:4], master_list[8:9], master_list[35:37]

解决方案

使用更泛化的方式:

i = 0
final_list = []
flag = True
while flag:
    temp_list = [index_list[i]]
    while (i < len(index_list)-1) and (index_list[i+1] - index_list[i]==1):
        i+=1

    temp_list.append(index_list[i])
    final_list.append(temp_list)
    i+=1
    if i >= len(index_list):
        flag=False

print(final_list)

input : [3,4,8,9,35,36,37]
ouptut : [[3, 4], [8, 9], [35, 37]]

input : [1,3,5,7,9]
output : [[1, 1], [3, 3], [5, 5], [7, 7], [9, 9]]

更新:

new_list = []
for i, j in final_list:
    new_list.append(list(range(i,j+1)))
print(new_list)

input:  [3, 4, 5, 16, 17, 31, 32, 33, 34] 
output : [[3, 4, 5], [16, 17], [31, 32, 33, 34]]

相关文章