Вы забыли привести внутреннюю функцию filter
к list
, когда вы это делаете, код работает как положено:)
myList = [[123,0.0,345,0.0,0.0,0.0],
[45,0.0,0.0,0.0],
[67,8,0.0,5,6,7,0.0]]
#Cast inner filter into a list
myList = list(list(filter(lambda j:j!=0,myList[i])) for i in range(len(myList)))
print(myList)
Выход будет
[[123, 345], [45], [67, 8, 5, 6, 7]]
Также более простым способом понимания будет использование списка-понимания
myList = [[123,0.0,345,0.0,0.0,0.0],
[45,0.0,0.0,0.0],
[67,8,0.0,5,6,7,0.0]]
#Using list comprehension, in the inner loop check if item is non-zero
myList = [ [item for item in li if item != 0] for li in myList ]
print(myList)
Выход будет
[[123, 345], [45], [67, 8, 5, 6, 7]]