<div>Già peccato che soffre di potenziali bug :-)</div><div><br></div><div>>>> reduce(lambda x, y: x*10+y, [2,3,5,7,81,3])</div><div>236513</div>
<br><br><div class="gmail_quote">2011/2/10 Andrea Ambu <span dir="ltr"><<a href="mailto:andreambu@gmail.com">andreambu@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Con la reduce stai facendo solo operazioni con interi senza tutto<br>
l'overhead della conversione e lo spippolamento di stringhe.<br>
<br>
In pratica con la reduce e` come se facessi:<br>
<br>
def unisci_interi(tupla):<br>
  r = 0<br>
  for i in tupla:<br>
    r *= 10<br>
    r += i<br>
  return r<br>
<br>
<br>
<br>
2011/2/10 Gianluca Bargelli <<a href="mailto:g.bargelli@gmail.com">g.bargelli@gmail.com</a>>:<br>
<div><div></div><div class="h5">> from timeit import Timer<br>
><br>
> t1 = Timer(""" reduce(lambda x, y: x*10+y, (1,2,3,4,5,6,7)) """)<br>
> t2 = Timer(""" "".join([str(i) for i in (1,2,3,4,5,6,7)]) """)<br>
><br>
> print("Reduce: {0} | List comprehension: {1}").format(t1.timeit(), t2.timeit())<br>
><br>
> l'output sulla mia macchina con timeit() è:<br>
><br>
> "Reduce: 1.58372807503 | List comprehension: 2.46447396278"<br>
><br>
> usando Python 2.6.6 (Linux), qualcuno sa spiegare il perché di tale<br>
> differenza? :-)<br>
><br>
> Il 10 febbraio 2011 17:44, Simone Federici <<a href="mailto:s.federici@gmail.com">s.federici@gmail.com</a>> ha scritto:<br>
>> Quale è la più performante?<br>
>><br>
>> 2011/2/10 Gianluca Bargelli <<a href="mailto:g.bargelli@gmail.com">g.bargelli@gmail.com</a>><br>
>>><br>
>>> Ops, pardon!<br>
>>><br>
>>> t = (1,2,3,4,5,6,7)<br>
>>> int("".join([str(i) for i in t]))<br>
>>><br>
>>> La solita fretta :-)<br>
>>><br>
>>> Il 10 febbraio 2011 17:32, Marco Beri <<a href="mailto:marcoberi@gmail.com">marcoberi@gmail.com</a>> ha scritto:<br>
>>> > 2011/2/10 Gianluca Bargelli <<a href="mailto:g.bargelli@gmail.com">g.bargelli@gmail.com</a>><br>
>>> >><br>
>>> >> Ecco la prima cosa che mi è venuta in mente:<br>
>>> >><br>
>>> >> t = (1,2,3,4,5,6,7)<br>
>>> >> "".join([str(i) for i in t])<br>
>>> >><br>
>>> >> Pulita, leggibile...semplice! ;-)<br>
>>> ><br>
>>> > E sbagliata :-)<br>
>>> > Ci manca un int().<br>
>>> ><br>
>>> > _______________________________________________<br>
>>> > Python mailing list<br>
>>> > <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
>>> > <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
>>> ><br>
>>> ><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> -Gianluca<br>
>>> _______________________________________________<br>
>>> Python mailing list<br>
>>> <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
>>> <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
>><br>
>><br>
>> _______________________________________________<br>
>> Python mailing list<br>
>> <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
>> <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> -Gianluca<br>
> _______________________________________________<br>
> Python mailing list<br>
> <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
> <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
><br>
<br>
<br>
<br>
</div></div>--<br>
<font color="#888888">Andrea<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</div></div></blockquote></div><br>