如何从数组python中删除0

我有一个数组数组,我想删除所有为零的值。我有这个


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)


慕桂英546537
浏览 589回答 3
3回答

海绵宝宝撒

您可以使用列表理解: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是数字。

跃然一笑

您还可以使用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。这一行也称为列表理解

撒科打诨

您可以轻松过滤列表: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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python