python如何删除二维或者三维数组/列表中某维的空元素
如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题。
一.首先来看一下三维数组/列表的结构
仔细看下图就会很清楚了:
轴0即是去除第一个外括号后第一层(我把它称做第一维)有四大块;
对轴1则是对每一块来说,去掉大块的括号后的四小横条(我把它称作第二维);
对轴2则是对每一条来说,去掉小条的括号后的每一个数(从外往里数第三层括号,我就叫做第三维)
二.代码
1.删除二维数组中为空的元素则比较简单:
oldlist=[[1, 1, 1, 1, 1], [1, 1, 1, 1, 2], [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8], [16, 16], [], [] , []]
newlist=[x for x in oldlist if x] #删除空列表[]
print(newlist)
结果如下:
[[1, 1, 1, 1, 1], [1, 1, 1, 1, 2], [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8], [16, 16]]
2.(延伸)对三维数组
代码中我们用的三维数组如下:
[ [[, , , , ], [, , , , , ], [, , , , ], [, ], [], []],
[[], [], []],
[],
[] ]
其中第一维和第二维都设置了为空的元素
删除三维列表中第二维为空的元素,代码如下:
#.删除三维列表中第二维为空的元素
oldlist=[[[, , , , ], [, , , , , ], [ , , , , ], [, ], [], []], [[], [], []],[],[]]
new1=[]
new2=[]
def dellist(oldlist):
for sam in oldlist:
new1 = []
for x in sam:
if x:
new1.append(x)
new2.append(new1)
return new2 print(dellist(oldlist))
结果如下:
[ [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16]], [[111], [333], [444]], [], []]
若要想把第一维也为空的元素耶删除,加上一行即可:
oldlist=[[[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8], [16, 16], [], []], [[111],[333],[444]],[],[]]
new1=[]
new2=[]
def dellist(oldlist):
for sam in oldlist:
if sam:
new1 = []
for x in sam:
if x:
new1.append(x)
new2.append(new1)
return new2 print(dellist(oldlist))
结果如下:
[ [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16]],
[[111], [333], [444]] ]
觉得我的博客对你有用的话请点个赞哦!
python如何删除二维或者三维数组/列表中某维的空元素的更多相关文章
- C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- [百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数
一.问题来源及描述 今天看了July的微博,发现了七月问题,有这个题,挺有意思的. 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4 ...
- (笔试题)数组A中任意两个相邻元素大小相差1,在其中查找某个数。
题目: 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置. 思路: 很明显,在数组中寻找 ...
- Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】
列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表.元组操作 (1)列表 列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不 ...
- python学习笔记(二)---for循环与操作列表
内容概要 for循环 range(start,end,step)函数 生成随机数列表 list()函数 将range()的结果整合到某个列表 列表的操作 切片(start: end :step) 元组 ...
- Python自学:第三章 弹出列表中任何位置处的元素
motorcycles = ["honda", "yamaha", "suzuki"] first_owned = motorcycles. ...
- python 判断两个列表中相同和不同的元素
背景: 在做接口自动化时,通常会判断接口返回中的数据信息,与数据库中返回的数据信息是否一致,比如:将接口返回信息的用户姓名存放到一个列表中,将数据库返回的用户姓名存放到另一个列表中,这时需要判断两个列 ...
- python列表中,多次追加元素
在列表中追加元素,可以使用append(),列表相加也可以用extend()函数,多次追加元素可以用“+”实现 l=[1,2,3,4,5] x=6 y=7 z=8 l=l+[x]+[y]+[z] pr ...
- python将一些朋友的姓名存储在一个列表中,访问该列表中的每个元素,从而将每个朋友的姓名都打印出来
""" 3-1 姓名: 将一些朋友的姓名存储在一个列表中,并将其命名为 names . 依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. "&quo ...
随机推荐
- Alodi:环境创建从未如此简单
一个满足你各种想象的快速方便生成临时环境的系统 在『Alodi:为了保密我开发了一个系统』文章中有讲到我们开发了一个系统用来快速生成临时测试环境,短短三个月已有数百个环境被创建,简化了工作,节省了时间 ...
- Spring Boot2 系列教程 (十六) | 整合 WebSocket 实现广播
前言 如题,今天介绍的是 SpringBoot 整合 WebSocket 实现广播消息. 什么是 WebSocket ? WebSocket 为浏览器和服务器提供了双工异步通信的功能,即浏览器可以向服 ...
- 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》-总结
一.什么是业务中台 概念来自于阿里,介于前台和后台(此后台指的是云计算.数据库.消息队列.缓存等基础服务) 采用共享式架构设计解决以往烟囱式架构设计的资源浪费.重复造轮.试错成本高的问题 阿里的中 ...
- 如何编写Robot Framework测试用例2---(测试用例语法1)
基本语法 测试用例由关键字组成,关键字的来源有三种: 1从测试库引入:2从资源文件引入:3从关键字表中引入(自定义关键字) 下面就是一个典型的测试用例组织形式. 图中有2个测试用例“Valid Log ...
- docker安装的gitlab的备份与恢复
1.对docker容器安装gitlab备份 1) 查看容器id docker ps 2) 将容器备份成镜像文件 docker commit -a 'James' -m 'gitlab_backup' ...
- Exception in thread "main" java.lang.AbstractMethodError: org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z
依赖冲突,查看pom.xml文件 查看parent项目的依赖版本为 <parent> <groupId>org.springframework.boot</groupId ...
- http的异步请求
需要用到的包(包版本应该可能不同): httpcore-4.1.4.jar httpsayncclient-4.0-alpha3.jar httpcore-nio-4.2-alpha3.jar /** ...
- 美食家App开发日记4
研究了卡片式布局中的Recyclerview的用法,但是调试了很长时间,导入包总是有问题,一到手机上运行就会闪退.还是在网上查了很多方法,很不开心我还是解决不了.
- QEMU和KVM的关系
首先KVM(Kernel Virtual Machine)是Linux的一个内核驱动模块,它能够让Linux主机成为一个Hypervisor(虚拟机监控器).在支持VMX(Virtual Machin ...
- ReactNative---ref的用法和技巧
1.获取上下文的组件 2. ref属性不仅接受string类型的参数,而且它还可以接受一个function 作为callback.如:将组件view作为参数赋值给this._view <View ...