【Python小技巧】python从数字列表中提取出指定长度的连续数字片段

问题描述:

在处理一堆数据列表问题是遇到了一个小难题,就是如何从一串不固定长度的数字元素列表中提取出指定连续长度的元素片段呢?

例如:

'''我们想对下面这个列表:
    1、将连续的数字片段提取出来
    2、指定连续的片段长度,例如我想把满足3个元素连续或者4个元素连续的片段提取出来'''
num_list = [1, 2, 4, 5, 6, 7, 14, 15, 17, 18, 19, 31, 32, 33, 34, 46, 48, 78, 90, 112, 113, 114, 160, 432]

解决措施:

def continusFind(num_list):
    num_list.sort()
    s = 1
    find_list = []
    have_list = []
    while s <= len(num_list) - 1:
        if num_list[s] - num_list[s - 1] == 1:
            flag = s - 1
            while num_list[s] - num_list[s - 1] == 1:
                s += 1
                #判断是否为连续的3连号或者4连号或者5连号的连续片段
                if len(num_list[flag:s])==3 or len(num_list[flag:s])==4 or len(num_list[flag:s])==5:
                    find_list.append(num_list[flag:s])
                    have_list += num_list[flag:s]
        else:
            s += 1
    return find_list

num_list = [1, 2, 4, 5, 6, 7, 14, 15, 17, 18, 19, 31, 32, 33, 34, 46, 48, 78, 90, 112, 113, 114, 160, 432]

print(continusFind(num_list))

效果展示:

在这里插入图片描述

成功将指定长度的连续片段取出!

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值