问题描述

假定有一个列表[1,2,3,4,6,9,7,8],请将连续的分为一组,不连续的单独成组。结果为:[[1,2,3,4],[6],[9],[7,8]]

C语言

#include

int main(){

int i =0;

int j =0;

int k =0;

int i1=0;

int j1=0;

int a[] = {2,3,4,11,17,20,21,22,23,24,25,26};

int b[5][10]={

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}

};

for (i;i<=11;i++){

b[j][k] = a[i];

k++;

if(a[i+1] != a[i] + 1){

j++;

k=0;

continue;

}

}

printf("二维数组存储结果\n");

for (i1=0;i1<5;i1++ ) {

for (j1=0;j1<10 && b[i1][j1] != -1 ;j1++ ){

printf("%d ",b[i1][j1]);

}

printf("\n");

}

return 0;

}

这是同学写的一段代码,据说可以出来。若感兴趣请自测。

python版

刚开始自己写的有点蠢,bug还多,借鉴一下C语言实现思路。其中的核心代码:

for (i;i<=11;i++){

b[j][k] = a[i];

k++;

if(a[i+1] != a[i] + 1){

j++;

k=0;

continue;

}

Python代码:

def newFunction(a):

"""

寻找连续的天,连续的放在一组,不连续则单独成组

:param a: list

:return:

"""

if len(a)==1:

return a

else:

#寻找连续的day,若不连续则插入‘’

temp=[]

for i in range(len(a)-1):

temp.append(a[i])

if a[i+1]!=a[i]+1:#DateOffset(days=1)

temp.append('')

continue

#定位前面""的位置

tmp_index=[num for num,i in enumerate(temp) if not i]

#找到其在原列表的索引(位置)

tmp_index=[i-num for num,i in enumerate(tmp_index)]

#分组节点,如果第一个不是从0开始,则在首位插入0;类似,若最后一位不是len(a),则插入它

if tmp_index[0]!=0:

tmp_index.insert(0,0)

if tmp_index[-1]!=len(a):

tmp_index.insert(len(a),len(a))

#保存分组的结果

result=[]

for i in range(len(tmp_index)-1):

result.append(a[tmp_index[i]:tmp_index[i+1]])

return result

原谅不会数据结构等,只能现学现卖。实现思路:

(1). C语言核心代码的思路是连续的元素直接输出,不连续的换行输出。基于这个思路:连续的直接存储到列表,不连续的将换行符变成''插入列表。

(2). 然后定位到''所在的索引,通过转换确定出其在原列表的位置。

(3). 理论上这里可以通过遍历结束,实力不够,先忽略。笨办法:先构造出完整的切片(索引)区间,通过下述代码实现。

#分组节点,如果第一个不是从0开始,则在首位插入0;类似,若最后一位不是len(a),则插入它

if tmp_index[0]!=0:

tmp_index.insert(0,0)

if tmp_index[-1]!=len(a):

tmp_index.insert(len(a),len(a))

(4). 最然按照切片索引区间切割原列表即可。

测试结果

变形应用

可以应用到连续时间序列的查找上,函数需要改动的地方为:

if a[i+1]!=a[i]+1:#DateOffset(days=1)#from pandas.tseries.offsets import *

欢迎交流!!!

python list 查找子列_寻找列表连续的子列相关推荐

  1. python实现并发判重_寻找python大神!!!python如何多线程并发?

    不是大神.尝试回答一下. 首先解释下什么叫做线程,什么叫做进程,在解释这两个概念前,我们还需要明白什么叫做GIL全局解释器锁.GIL 全局解释器锁: GIL(全局解释器锁,GIL 只有cpython有 ...

  2. qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...

    1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...

  3. 一行python并行加速for循环_加速列表和for循环python

    我们的想法是,这两个列表都是比较所有潜在的 组合和所有选项将附加到新列表中. 对于可变数量的变量,可以使用字典. 要计算两个列表的成对笛卡尔积,可以使用 itertools.product 具有 ma ...

  4. sql 行转列_想要表格行转列?简单几行Python代码搞定

    前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...

  5. python快速查找_python应用_快速查找 | 学步园

    快速查找 import random def partition(list_object,start,end): random_choice = start#random.choice(range(s ...

  6. python编程:合并文本_利用列表或字典将两个通讯录文本合并-7

    源码: #利用字符串和列表将两个通讯录文本合并为一个文本 def main(): ftele1=open('TeleAddressBook.txt','rb') ftele2=open('EmailA ...

  7. python int转化为字符串_将列表项从字符串转换为int(Python)

    参见英文答案 > Convert all strings in a list to int 2个 我有一个清单: Student_Grades = ['56', '49', '63'] 我想将每 ...

  8. python编程查找黑洞数_黑洞数筛选Python实现

    ''' 黑洞数 由组成这个数的数字组成的最大数减去最小数等于其本身 例如 495 954 - 459=495 ''' 实现思路 迭代此数值段的所有数,将数转换为String类型,通过str的sorte ...

  9. python读取plt文件吗_如何读取连续的.plt文件并存储它们

    我有1000个文件要用python读取.以前,我有74个,我只是一个一个地读,但现在有太多的事情要做.在data_1 = np.genfromtxt('test4-1.000001.plt', del ...

  10. pentile 子像素_三星和索尼OLED子像素排列方式对比 有哪些差异?

    目前已经有很多 VR 头戴设备在市面上进行发售,不同的厂家都因为价格定位的差异而选择不同的硬件解决方案.在其中最影响体验效果的自然是 下面,我们就以三星和索尼 的 OLED 产品为例进行浅要分析. 三 ...

最新文章

  1. Android面试题目整理与讲解
  2. springboot 获取配置文件中的值_Spring Boot面试必问(亲测)
  3. assert.notStrictEqual()详解
  4. vue+uwsgi+nginx部署路飞学城
  5. 排序算法 -- 待增加
  6. 如何从标签创建新分支?
  7. 查看linux版本是 centos还是ubuntu
  8. 吴恩达机器学习笔记23-神经网络:表述--非线性假设(Non-linear Hypotheses)
  9. 基于springboot的家政服务网站
  10. mybatis 文档 学习
  11. 构建企业级推荐系统(05):从零开始入门推荐算法工程师(万文建藏)
  12. 重庆主城区首套房个人所得税退还攻略
  13. 区块链项目需要服务器吗,区块链需要服务器吗
  14. 修复DialogFragment Fragment already added 异常
  15. Live Archive 6657
  16. IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
  17. 画江湖之独门暗器指针
  18. Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)
  19. Mysql中使用Update From语句
  20. scrapy代理IP

热门文章

  1. 无法启动此程序 因为计算机中丢失msvcr71.dll,msvcr71.dll丢失怎样修复?计算机中丢失msvcr71.dll的解决方法...
  2. 计算机关机的命令,电脑关机命令是什么
  3. 负压电源设计 TPS54160 负压 Level Shifting Control for an Inverting Buck-boost
  4. 联通4g满格但是网速慢_手机网速太慢怎么办 教你一招(4g信号满格网速很慢)...
  5. am3352偶发上电不启动问题分析
  6. Axis2 WS-Security 签名和加密
  7. 51单片机之继电器实验
  8. PrepareStatement对象
  9. pdf2Image Pdf文件存为jpg NodeJs实现
  10. 服务器在外国那么登录网站算,国外服务器网站好吗?好在哪?