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.(延伸)对三维数组

代码中我们用的三维数组如下:

[ [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16], [], []], 
  [[111], [333], [444]], 
  [], 
  [] ]

其中第一维和第二维都设置了为空的元素

删除三维列表中第二维为空的元素,代码如下:

#1.删除三维列表中第二维为空的元素 
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: 
        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]]  ]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值