On 10/9/06, Edward Waugh <[EMAIL PROTECTED]> wrote: > Consider the following (working) Python code: > > import sys > > def sum(list): > # total = 0 does not work for non-numeric types > total = list[0].__class__() > for v in list: > total += v > return total > > l = [1, 2, 3] > print sum(l) > > l = [1.1, 2.2, 3.3] > print sum(l) > > l = ["a", "b", "c"] > print sum(l) > > In order for sum() to be generic I initialize total to the value of > list[0].__class__(). This works but I would like to know if this is the > correct or preferred way of doing it. It means that sum() must be given a > list whose elements are types or classes that have a no-arg constructor > (through this is probably almost always the case). > > Thanks, > Edward
First of all, you never need to initialize the total to 0 of some specific type. You can just start with list[0] as the total and iterate over all the remaining values. Of course, you could just use reduce(lambda a,b: a+b, the_list) instead. Of course, you should never use list as a name, its a builtin already. Of course, you could just use the sum builtin (for numbers). -- Read my blog! I depend on your acceptance of my opinion! I am interesting! http://ironfroggy-code.blogspot.com/ -- http://mail.python.org/mailman/listinfo/python-list