python获取列表中最长连续数字
Posted 郑立赛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]
可以看出结果是我们想要的顺序。
以上是关于python获取列表中最长连续数字的主要内容,如果未能解决你的问题,请参考以下文章
在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段