为了账号安全,请及时绑定邮箱和手机立即绑定

如何从数组python中删除0

如何从数组python中删除0

慕桂英546537 2021-08-05 18:03:27
我有一个数组数组,我想删除所有为零的值。我有这个M_data = [    [0.0, 0.0, 0.0, 0.0, 0.0],    [19, 0.0, 0.0, 0.0, 0.0],    [27, 31, 0.0, 0.0, 0.0],    [8, 18, 26, 0.0, 0.0],    [33, 36, 41, 31, 0.0],    [18, 1, 32, 17, 35]    ]我想删除所有的零,所以我得到M_data = [    [],    [19],    [27, 31],    [8, 18, 26],    [33, 36, 41, 31],    [18, 1, 32, 17, 35]    ]我怎样才能做到这一点?(Python)
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您可以使用列表理解:


M_data = [

    [0.0, 0.0, 0.0, 0.0, 0.0],

    [19, 0.0, 0.0, 0.0, 0.0],

    [27, 31, 0.0, 0.0, 0.0],

    [8, 18, 26, 0.0, 0.0],

    [33, 36, 41, 31, 0.0],

    [18, 1, 32, 17, 35]

    ]


result = [[e for e in lst if e] for lst in M_data]

print(result)

输出


[[], [19], [27, 31], [8, 18, 26], [33, 36, 41, 31], [18, 1, 32, 17, 35]]

以上相当于:


result = []

for lst in M_data:

    inner = []

    for e in lst:

        if e:

            inner.append(e)

    result.append(inner)

这个想法是遍历内部列表并创建仅包含0. 要检查与 0 不同的值,您可以直接使用该值if,Python 0 中的语句是False。例如if e相当于if e != 0,whene是数字。

查看完整回答
反对 回复 2021-08-05
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您还可以使用filter过滤所有None(0) 值作为

lst = [list(filter(None, lst)) for lst in M_data]

输出

[[], [19], [27, 31], [8, 18, 26], [33, 36, 41, 31], [18, 1, 32, 17, 35]]

list该器的输出转换filter,因为你想要一个空表太命令返回一个列表。您循环遍历您的子列表,M_data然后过滤掉 0。这一行也称为列表理解


查看完整回答
反对 回复 2021-08-05
?
撒科打诨

TA贡献1934条经验 获得超2个赞

您可以轻松过滤列表:


M_data = [

    [0.0, 0.0, 0.0, 0.0, 0.0],

    [19, 0.0, 0.0, 0.0, 0.0],

    [27, 31, 0.0, 0.0, 0.0],

    [8, 18, 26, 0.0, 0.0],

    [33, 36, 41, 31, 0.0],

    [18, 1, 32, 17, 35]

    ]

M_data = [[x for x in y if x != 0] for y in L]

M_data

//img1.sycdn.imooc.com//610bb79b00012b1512410255.jpg

查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号