python list 查找子列_寻找列表连续的子列
问题描述
假定有一个列表[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 查找子列_寻找列表连续的子列相关推荐
- python实现并发判重_寻找python大神!!!python如何多线程并发?
不是大神.尝试回答一下. 首先解释下什么叫做线程,什么叫做进程,在解释这两个概念前,我们还需要明白什么叫做GIL全局解释器锁.GIL 全局解释器锁: GIL(全局解释器锁,GIL 只有cpython有 ...
- qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...
1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...
- 一行python并行加速for循环_加速列表和for循环python
我们的想法是,这两个列表都是比较所有潜在的 组合和所有选项将附加到新列表中. 对于可变数量的变量,可以使用字典. 要计算两个列表的成对笛卡尔积,可以使用 itertools.product 具有 ma ...
- sql 行转列_想要表格行转列?简单几行Python代码搞定
前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...
- python快速查找_python应用_快速查找 | 学步园
快速查找 import random def partition(list_object,start,end): random_choice = start#random.choice(range(s ...
- python编程:合并文本_利用列表或字典将两个通讯录文本合并-7
源码: #利用字符串和列表将两个通讯录文本合并为一个文本 def main(): ftele1=open('TeleAddressBook.txt','rb') ftele2=open('EmailA ...
- python int转化为字符串_将列表项从字符串转换为int(Python)
参见英文答案 > Convert all strings in a list to int 2个 我有一个清单: Student_Grades = ['56', '49', '63'] 我想将每 ...
- python编程查找黑洞数_黑洞数筛选Python实现
''' 黑洞数 由组成这个数的数字组成的最大数减去最小数等于其本身 例如 495 954 - 459=495 ''' 实现思路 迭代此数值段的所有数,将数转换为String类型,通过str的sorte ...
- python读取plt文件吗_如何读取连续的.plt文件并存储它们
我有1000个文件要用python读取.以前,我有74个,我只是一个一个地读,但现在有太多的事情要做.在data_1 = np.genfromtxt('test4-1.000001.plt', del ...
- pentile 子像素_三星和索尼OLED子像素排列方式对比 有哪些差异?
目前已经有很多 VR 头戴设备在市面上进行发售,不同的厂家都因为价格定位的差异而选择不同的硬件解决方案.在其中最影响体验效果的自然是 下面,我们就以三星和索尼 的 OLED 产品为例进行浅要分析. 三 ...
最新文章
- Android面试题目整理与讲解
- springboot 获取配置文件中的值_Spring Boot面试必问(亲测)
- assert.notStrictEqual()详解
- vue+uwsgi+nginx部署路飞学城
- 排序算法 -- 待增加
- 如何从标签创建新分支?
- 查看linux版本是 centos还是ubuntu
- 吴恩达机器学习笔记23-神经网络:表述--非线性假设(Non-linear Hypotheses)
- 基于springboot的家政服务网站
- mybatis 文档 学习
- 构建企业级推荐系统(05):从零开始入门推荐算法工程师(万文建藏)
- 重庆主城区首套房个人所得税退还攻略
- 区块链项目需要服务器吗,区块链需要服务器吗
- 修复DialogFragment Fragment already added 异常
- Live Archive 6657
- IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
- 画江湖之独门暗器指针
- Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)
- Mysql中使用Update From语句
- scrapy代理IP
热门文章
- 无法启动此程序 因为计算机中丢失msvcr71.dll,msvcr71.dll丢失怎样修复?计算机中丢失msvcr71.dll的解决方法...
- 计算机关机的命令,电脑关机命令是什么
- 负压电源设计 TPS54160 负压 Level Shifting Control for an Inverting Buck-boost
- 联通4g满格但是网速慢_手机网速太慢怎么办 教你一招(4g信号满格网速很慢)...
- am3352偶发上电不启动问题分析
- Axis2 WS-Security 签名和加密
- 51单片机之继电器实验
- PrepareStatement对象
- pdf2Image Pdf文件存为jpg NodeJs实现
- 服务器在外国那么登录网站算,国外服务器网站好吗?好在哪?