Я бы сказал, что лучше использовать фильтр с лямбда-выражением, чтобы отфильтровать нулевые значения.
for idx in range(len(W)):
W[idx]=list((filter(lambda a: a != 0, W[idx])))
print(W)
Это даст вам следующий вывод:
[[5.0], [5.0, 0, 0, 0], [0, 0, 0], [5.0, 0, 0, 0], [5.0, 0, 0, 0]]
[[5.0], [5.0], [0, 0, 0], [5.0, 0, 0, 0], [5.0, 0, 0, 0]]
[[5.0], [5.0], [], [5.0, 0, 0, 0], [5.0, 0, 0, 0]]
[[5.0], [5.0], [], [5.0], [5.0, 0, 0, 0]]
[[5.0], [5.0], [], [5.0], [5.0]]