itertools.tee, , .
iter0, iter1, iter2 = itertools.tee(input_iter, 3)
ilen, sum_x, sum_x_sq = count(iter0),sum(iter1),sum(map(lambda x:x*x, iter2))
, sum ( map Python 2) , . , , . tee , , , , .
, , , zip. Python 3, map zip - . , sum .
, , , itertools.accumulate ( Python 3.2). , . , ( , count len), :
iter0, iter1, iter2 = itertools.tee(input_iter, 3)
len_gen = itertools.accumulate(map(lambda x: 1, iter0))
sum_gen = itertools.accumulate(iter1)
sum_sq_gen = itertools.accumulate(map(lambda x: x*x, iter2))
parallel_gen = zip(len_gen, sum_gen, sum_sq_gen)
for ilen, sum_x, sum_x_sq in parallel_gen:
pass
Python 2, 3, accumulate ( Python , ) itertools.imap itertools.izip, map zip.