On 19 Jun 2007, at 21:53, Mike Klaas wrote:
> ...
> Stats from _any_ large python project is better than anecdotes.
> Perhaps it would be better to turn to the stdlib (367289 lines)?
...
>        reduce(lambda a, b: (0, a[1] + b[1]), items)[1]
>
> (which could be written sum(x[1] for x in items)

Only if the items at index 1 happen to be numbers.  That's another  
bugbear of mine.  The sum(l) built-in is NOT equivalent to reduce 
(operator.add, l) in Python 2.x:
        >>> reduce(operator.add, [1,2,3])
        6
        >>> reduce(operator.add, ['a','b','c'])
        'abc'
        >>> reduce(operator.add, [["a"],[u'b'],[3]])
        ['a', u'b', 3]
        >>> sum([1,2,3])
        6
        >>> sum(['a','b','c'])
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        TypeError: unsupported operand type(s) for +: 'int' and 'str'
        >>> sum([["a"],[u'b'],[3]])
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        TypeError: unsupported operand type(s) for +: 'int' and 'list'

Given that reduce is moving one step further away in Python 3, and  
given that it's use seems to be somewhat discouraged these days  
anyway, perhaps the sum() function could be made properly polymorphic  
so as to remove one more class of use cases for reduce().

        Nicko

_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to