On Sun, 04 May 2008 00:31:01 +0200, Thomas Dybdahl Ahle wrote: > On Sat, 2008-05-03 at 21:37 +0000, Ivan Illarionov wrote: >> On Sat, 03 May 2008 20:44:19 +0200, Szabolcs Horvát wrote: >> >> > Arnaud Delobelle wrote: >> >> >> >> sum() works for any sequence of objects with an __add__ method, not >> >> just floats! Your algorithm is specific to floats. >> > >> > This occurred to me also, but then I tried >> > >> > sum(['abc', 'efg'], '') >> >> Interesting, I always thought that sum is like shortcut of >> reduce(operator.add, ...), but I was mistaken. >> >> reduce() is more forgiving: >> reduce(operator.add, ['abc', 'efg'], '' ) # it works 'abcefg' > > Hm, it works for lists: > sum(([1], [2]), []) > [1, 2] > > However I find the seccond argument hack ugly. Does the sum way have any > performance advantages over the reduce way?
Yes, sum() is faster: $ python -m timeit "" "sum([[1], [2], [3, 4]], [])" 100000 loops, best of 3: 6.16 usec per loop $ python -m timeit "import operator" \ "reduce(operator.add, [[1], [2], [3, 4]])" 100000 loops, best of 3: 11.9 usec per loop -- Ivan -- http://mail.python.org/mailman/listinfo/python-list