【python】獲取列表中最長連續數字

最近開發遇到一個功能需求,目的是要獲取一個AI分析結果中最長連續幀,好比一個視頻中連續3幀有人,那麼我認爲這個視頻就是有人,我就要判斷這個視頻幀列表中是否有連續的三幀有人。本質就是獲取列表中的最長連續數字,好比有一個列表 a = [1,2,3,4,1,2,3],要獲取這個列表中最長連續數字,應該是[1,2,3,4]。python

拓展,好比我想獲取每隔n的最長連續數字怎麼辦?例如:b = [1,3,5,7,9,1,4,7,10],我想獲取每隔2的最長連續數字,應該是[1,3,5,7,9],我想獲取每隔3的最長連續數字,應該是[1,4,7,10]app

下面是具體的代碼實現spa

#!/usr/bin/env python
# -*- coding:utf-8 -*-
def get_skip_frame(skip, frame_list):
    tmp_list = []
    return_list = []
    for i in range(len(frame_list)):
        if len(tmp_list) == 0:
            tmp_list.append(frame_list[i])
        else:
            change = abs(frame_list[i] - tmp_list[-1])
            if change == skip:
                tmp_list.append(frame_list[i])
            else:
                if len(return_list) < len(tmp_list):
                    return_list = tmp_list
                tmp_list = []
                tmp_list.append(frame_list[i])
    if len(return_list) < len(tmp_list):
        return_list = tmp_list
    return return_list
response1 = get_skip_frame(1, [1,2,3,1,2,3,4,1,3,5,7,9,1,4,7,10])
response2 = get_skip_frame(2, [1,2,3,1,2,3,4,1,3,5,7,9,1,4,7,10])
response3 = get_skip_frame(3, [1,2,3,1,2,3,4,1,3,5,7,9,1,4,7,10])
print response1
print response2
print response3

[1, 2, 3, 4]
[1, 3, 5, 7, 9]
[1, 4, 7, 10]code

 

 

能夠看出結果是咱們想要的順序。視頻

相關文章
相關標籤/搜索