[Python] Conversione tupla in intero

Simone Federici s.federici a gmail.com
Gio 10 Feb 2011 19:04:52 CET


>>> from timeit import Timer
>>> t1 = Timer(""" reduce(lambda x, y: x*10+y, (3,2,6,7,1,21,2)) """)
>>> t2 = Timer(""" "".join([str(i) for i in (3,2,6,7,1,21,2)]) """)
>>> t3 = Timer(""" int(  '%s' * 7 % (3,2,6,7,1,21,2)) """)
>>> "Reduce: {0} | List comprehension: {1} | String%
{2}".format(t1.timeit(), t2.timeit(), t3.timeit())
'Reduce: 1.77485489845 | List comprehension: 3.06255602837 | String%
1.46671390533'
>>> "Reduce: {0} | List comprehension: {1} | String%
{2}".format(t1.timeit(), t2.timeit(), t3.timeit())
'Reduce: 1.77306890488 | List comprehension: 3.03216409683 | String%
1.43420696259'

Indefinitiva, la terza è la più rapida da me.
La prima è un ottimo compromesso ma ha il difetto di errare i calcoli se la
tupla contiene interi>9
La seconda è tragica

ciao
S

2011/2/10 Paolo Bernardi <villa.lobos a tiscali.it>

> I numeri, in assoluto, non vogliono dire granché, lordkrandel... Troppa
> variabilità di hardware e software. ;-) Piuttosto, esegui il timer di
> tutti e tre i metodi sul tuo computer e confronta i risultati, così
> quantomeno hai una certa uniformità di base. :-)
>
> Paolo
>
> On Thu, 2011-02-10 at 18:22 +0100, lordkrandel wrote:
> > On 10/02/2011 18.02, Gianluca Bargelli wrote:
> > > t1 = Timer(""" reduce(lambda x, y: x*10+y, (1,2,3,4,5,6,7)) """)
> > > t2 = Timer(""" "".join([str(i) for i in (1,2,3,4,5,6,7)]) """)
> > > "Reduce: 1.58372807503 | List comprehension: 2.46447396278"
> > > usando Python 2.6.6 (Linux), qualcuno sa spiegare il perché di tale
> > > differenza? :-)
> >
> > Sicuramente perchè non passi per la conversione in stringa, tagliando
> > fuori tutti i problemi di charset etc...
> >
> >  >>> Timer(""" int('%s' * 7 % tuple(range(1,8)))""").timeit()
> > 2.3354565150000006
> >
> >
> >
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110210/e4f629cc/attachment.html>


Maggiori informazioni sulla lista Python