Karl Pfl�sterer wrote:
Sorry but IMO the above is too much complicated for such a simple task.

That depends on your point of view, I think; I find it conceptually at least as easy only to think in terms of numbers when both input and output are numbers. Our assumptions are different too: I assume the input consists of digits and the output is an integer, you allow for bigger numbers as input and assume the output is a string.


Either convert the digits to a string and concatenate them with:

def intlist_to_string (lst):
    return ''.join(map(str, lst))

As Orri said, other posts already showed that approach. I just wanted to point out an alternative.


The first solution is IMO clear.  It's also the fastest solution.  If
you time the functions you will see that if intlist_to_string needs 1
second intlist_to_string_red needs 2.3 seconds and your solution
listtoint needs 3.5 seconds.

Depends.

import timeit
def time_it (funs, num=1000):
    for fun in funs:
        call = '%s(range(100))' % fun
        imp = 'from __main__ import %s' % fun
        t = timeit.Timer(call, imp)
        print call
        print t.timeit(number=num)
        print '*'*50

I changed it somewhat, to make it work according to my (admittely possibly wrong) assumptions:


def time_it(funs, num=1000):
    for fun in funs:
        call = '%s(range(1,10)*10)' % fun
        imp = 'from __main__ import %s' % fun
        t = timeit.Timer(call, imp)
        print call
        print t.timeit(number=num)
        print '*'*50

and I used my version, without Orri's adaption to allow for non-digit inputs.

I also changed your function to make it return an int instead of a string, and ran it like:

time_it(('intlist_to_int', 'listtoint'), num=10000)

intlist_to_int(range(1,10)*10)
1.02976551489
**************************************************
listtoint(range(1,10)*10)
0.929201057676
**************************************************

Not that much difference, but mine seems to be somewhat faster in that case. I guess it's because yours need (after I made it return an int, assuming that's what kilovh wanted) to convert the string back to an int. The algorithm to do that looks a lot like my function.

With Orri's adaption, listtoint slows down a lot, which explains your results. I think different approaches are possible, and which one is best depends on the circumstances.

Karl Pfl�sterer wrote:
> Please do *not* send copies of replies to me.
> I read the list

I agree, but I got a copy of your reply in my inbox. Either gmane.org screwed up or you inadvertently cc-ed me.

--
"Codito ergo sum"
Roel Schroeven

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to