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