根据列表内各元素个数进行列表切片分类的简单处理方法 | 您所在的位置:网站首页 › 统计集合中元素个数 › 根据列表内各元素个数进行列表切片分类的简单处理方法 |
1、待处理数据情况
step = [1,1,1,2,2,2,2,2,3,3,3,4,4,4,5,5,6,6,6,7,8,8,9,9,9] value = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y] tips:step与value一一对应但不是数组或矩阵的关系 2、目的目的是将step内的数据按各元素个数进行切片,形成单独的列表,如下所示: step_list=[[1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5], [6, 6, 6], [7], [8, 8], [9, 9, 9]] value_list=[['a', 'b', 'c'], ['d', 'e', 'f', 'g', 'h'], ['i', 'j', 'k'], ['l', 'm', 'n'], ['o', 'p'], ['q', 'r', 's'], ['t'], ['u', 'v'], ['w', 'x', 'y']] 下面的输出也就容易实现 step1=[1,1,1] value1=[a,b,c] num = 3 step2=[2,2,2,2,2] value2=[d,e,f,g,h] num = 5 ... step9=[9,9,9] value = [w,x,y] num = 3 3、代码 import numpy as np from collections import Counter step = [1,1,1,2,2,2,2,2,3,3,3,4,4,4,5,5,6,6,6,7,8,8,9,9,9] value = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y] obj_coun = Counter(step).most_common() # 对列表step内元素进行统计 beternum = np.unique(step) benter_list = beternum.tolist() obj_num = [] # 点数量列表 dir = {} # 将counter类型转换成字典(没找到直接进行转换的方法所以只能一个一个遍历提取了T。T) dir1 ={} # 用于储存排好序的轨迹数 step_list = [] value_list = [] for i in range(len(benter_list)): dir["%s"%obj_coun[i][0]] = obj_coun[i][1] for k in sorted(dir): dir1[k] = dir[k] for key in dir1.keys(): obj_num.append(dir1[key]) # 进行切片 for i in range(len(benter_list)): step_list.append(step[sum(obj_num[0:i]):sum(obj_num[0:i+1])]) for i in range(len(benter_list)): value_list.append(value[sum(obj_num[0:i]):sum(obj_num[0:i+1])]) print("step_list=",step_list) print("value_list=",value_list) 4、结果展示step_list= [[1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5], [6, 6, 6], [7], [8, 8], [9, 9, 9]] value_list= [['a', 'b', 'c'], ['d', 'e', 'f', 'g', 'h'], ['i', 'j', 'k'], ['l', 'm', 'n'], ['o', 'p'], ['q', 'r', 's'], ['t'], ['u', 'v'], ['w', 'x', 'y']] 在网上找了很多资料也没找到合适的方法,就自己试着编写了一下,从满足使用需求上来说对我而言已经够用了,但是还有很多不成熟的地方,比如代码还比较冗余等等。 但是,未来可期,加油呀少年! |
CopyRight 2018-2019 实验室设备网 版权所有 |