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 '*'*50and 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
