Вероятно, самый Pythonic способ - это написать код, который не нуждается в функции подсчета.
Обычно быстрее всего написать стиль функций, который вам лучше всего подходит, и продолжить совершенствовать свой стиль.
Записывайте один раз, часто читайте код.
Кстати, ваш код не выполняет то, что говорит ваш заголовок!Считать не 0 элементов непросто, учитывая ошибки округления в плавающих числах, что False равно 0 ..
Если у вас нет значений с плавающей запятой в списке, это может сделать это:
def nonzero(seq):
return (item for item in seq if item!=0)
seq = [None,'', 0, 'a', 3,[0], False]
print seq,'has',len(list(nonzero(seq))),'non-zeroes'
print 'Filter result',len(filter(None, seq))
"""Output:
[None, '', 0, 'a', 3, [0], False] has 5 non-zeroes
Filter result 3
"""