reduce to be removed?

Dustan DustanGroups at gmail.com
Sat Nov 11 18:48:05 EST 2006


Fredrik Lundh wrote:
> Dustan wrote:
>
> > It's always nice to know there are such good-natured people ready to
> > help on this group.
>
> any special reason why you keep pretending that some random wikipedia
> editor knows more about a future Python release than the people that
> develops Python ?

Be careful how you word that - this is the first time I've ever
referenced wikipedia in a question on this forum.

> > Anyway, I figured out a way to get the builtin
> > function 'sum' to work as I need:
> > sum([[1,2,3],[4,5,6],[7,8,9]],  [])
>
> sum() is designed for adding numbers, not sequences.  abusing it
> for sequences leads to inefficient code, and extremely bad worst-
> case behaviour, since you end up copying the same data over and
> over and over again

Thanks for some quality feedback for a change. Why can't you do that
more often?

> -- the function even checks for strings for
> this very reason:
>
>  >>> sum(["123", "456", "789"], "")
> Traceback (most recent call last):
>    File "<stdin>", line 1, in ?
> TypeError: sum() can't sum strings [use ''.join(seq) instead]
>
> (maybe it should check for other well-known containers as well?)
>
> if you care about writing robust code, why not just use a for-loop,
> and the list extend method?

Because I'm embedding this expression in a list comprehension (as I
stated in my original post), and last time I checked, it's not possible
to treat a for-loop as an expression (which is what a list
comprehension requires).

> </F>




More information about the Python-list mailing list