根据列表内各元素个数进行列表切片分类的简单处理方法 您所在的位置:网站首页 统计集合中元素个数 根据列表内各元素个数进行列表切片分类的简单处理方法

根据列表内各元素个数进行列表切片分类的简单处理方法

2023-03-28 13:58| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有