-
海绵宝宝撒
您可以使用列表理解: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