lst = [[ 12., 26., 0., 0., 0., 0., 0., 0.],
[ 12., 27., 36., 46., 56., 66., 0., 0.],
[ 13., 22., 38., 50., 66., 81., 94., 107.],
[ 3., 0., 0., 0., 0., 0., 0., 0.]]
result_lst = map(lambda x:sum(x)/len(x),[tup if 0.0 not in tup else filter(lambda x: x != 0.0,tup) for tup in map(list,zip(*lst))])
print result_lst
Result : [10.0, 25.0, 37.0, 48.0, 61.0, 73.5, 94.0, 107.0]
Привет, я знаю, что мы можем получить вывод разными способами, но я не хочу использовать какие-либо Модули (numpy), я просто хочу использовать список Сжатия, чтобы получить наш результат,Позвольте мне объяснить, как мне это сделать:
map(list,zip(*lst))
выдаст список списков для сравнения на основе индекса filter
функция выдаст список без нулей - наконец мы находим среднее значение
Направь меня, если я смогу сделать какое-нибудь эффективное изменение в моем сжатии списка