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是数字。

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。这一行也称为列表理解

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
添加回答
举报