[Python] Conversione tupla in intero

Andrea Ambu andreambu a gmail.com
Gio 10 Feb 2011 18:22:57 CET


Con la reduce stai facendo solo operazioni con interi senza tutto
l'overhead della conversione e lo spippolamento di stringhe.

In pratica con la reduce e` come se facessi:

def unisci_interi(tupla):
  r = 0
  for i in tupla:
    r *= 10
    r += i
  return r



2011/2/10 Gianluca Bargelli <g.bargelli a gmail.com>:
> from timeit import Timer
>
> 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)]) """)
>
> print("Reduce: {0} | List comprehension: {1}").format(t1.timeit(), t2.timeit())
>
> l'output sulla mia macchina con timeit() è:
>
> "Reduce: 1.58372807503 | List comprehension: 2.46447396278"
>
> usando Python 2.6.6 (Linux), qualcuno sa spiegare il perché di tale
> differenza? :-)
>
> Il 10 febbraio 2011 17:44, Simone Federici <s.federici a gmail.com> ha scritto:
>> Quale è la più performante?
>>
>> 2011/2/10 Gianluca Bargelli <g.bargelli a gmail.com>
>>>
>>> Ops, pardon!
>>>
>>> t = (1,2,3,4,5,6,7)
>>> int("".join([str(i) for i in t]))
>>>
>>> La solita fretta :-)
>>>
>>> Il 10 febbraio 2011 17:32, Marco Beri <marcoberi a gmail.com> ha scritto:
>>> > 2011/2/10 Gianluca Bargelli <g.bargelli a gmail.com>
>>> >>
>>> >> Ecco la prima cosa che mi è venuta in mente:
>>> >>
>>> >> t = (1,2,3,4,5,6,7)
>>> >> "".join([str(i) for i in t])
>>> >>
>>> >> Pulita, leggibile...semplice! ;-)
>>> >
>>> > E sbagliata :-)
>>> > Ci manca un int().
>>> >
>>> > _______________________________________________
>>> > Python mailing list
>>> > Python a lists.python.it
>>> > http://lists.python.it/mailman/listinfo/python
>>> >
>>> >
>>>
>>>
>>>
>>> --
>>> -Gianluca
>>> _______________________________________________
>>> Python mailing list
>>> Python a lists.python.it
>>> http://lists.python.it/mailman/listinfo/python
>>
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>>
>>
>
>
>
> --
> -Gianluca
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
Andrea


Maggiori informazioni sulla lista Python