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)
這個想法是遍歷內部列表并創(chuàng)建僅包含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
,因為你想要一個空表太命令返回一個列表。您循環(huán)遍歷您的子列表,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
添加回答
舉報