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


    最近开发遇到一个功能需求,目的是要获取一个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]

     

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

  • 相关阅读:
    视频测试序列的下载地址【转】
    RDO、SAD、SATD、λ相关概念【转】
    RGB、YUV和YCbCr介绍【转】
    H.264和HEVC分析软件和工具【转】
    Mysql——Innodb和Myisam概念与数据恢复
    ubuntu个人初始配置记录
    H.264学习笔记6——指数哥伦布编码
    H.264学习笔记5——熵编码之CAVLC
    C/C++语言学习——内存分配管理
    H.264学习笔记4——变换量化
  • 原文地址:https://www.cnblogs.com/zhenglisai/p/10307190.html
Copyright © 2020-2023  润新知