码迷,mamicode.com
首页 > 编程语言 > 详细

【python】获取列表中最长连续数字

时间:2019-01-23 10:35:20      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:col   代码实现   就是   return   nbsp   change   结果   拓展   range   

最近开发遇到一个功能需求,目的是要获取一个AI分析结果中最长连续帧,比如一个视频中连续3帧有人,那么我认为这个视频就是有人,我就要判断这个视频帧列表中是否有连续的三帧有人。本质就是获取列表中的最长连续数字,比如有一个列表 a = [1,2,3,4,1,2,3],要获取这个列表中最长连续数字,应该是[1,2,3,4]。

拓展,比如我想获取每隔n的最长连续数字怎么办?例如:b = [1,3,5,7,9,1,4,7,10],我想获取每隔2的最长连续数字,应该是[1,3,5,7,9],我想获取每隔3的最长连续数字,应该是[1,4,7,10]

下面是具体的代码实现

#!/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]

 

 

可以看出结果是我们想要的顺序。

【python】获取列表中最长连续数字

标签:col   代码实现   就是   return   nbsp   change   结果   拓展   range   

原文地址:https://www.cnblogs.com/zhenglisai/p/10307190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!