<div class="gmail_quote">2012/7/20 Marco Beri <span dir="ltr"><<a href="mailto:marcoberi@gmail.com" target="_blank">marcoberi@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div class="im">2012/7/20 Walter Valenti <span dir="ltr"><<a href="mailto:waltervalenti@yahoo.it" target="_blank">waltervalenti@yahoo.it</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>In un array di stringhe. Posso sempre infilarli in un tupla.</div></div></blockquote><div><br></div></div><div>Una roba cosė con la funzione all non ti garba?</div><div><br></div><div>>>> import re</div>
<div>>>> s = ["12", "ab", "ZZ"]</div><div>>>> all(re.match(".*%s.*"%e, "abcZZxx12") for e in s)</div><div>True</div><div>>>> all(re.match(".*%s.*"%e, "abcZZxx1") for e in s)</div>
<div>False</div></div></blockquote><div><br></div><div>molto bello.</div><div><br></div><div>questo esempio mi ha acceso una lampadina (ammetto di non essermi mai posto il problema), `all` e `any` cortocircuitano ma bisogna stare attenti:</div>
<div><br></div><div><div>In [1]: l = range(1000)</div><div><br></div><div>In [2]: timeit all([x for x in l])</div><div>10000 loops, best of 3: 42.6 us per loop</div><div><br></div><div>In [3]: timeit all(x for x in l)</div>
<div>1000000 loops, best of 3: 661 ns per loop</div><div><br></div><div><br></div><div>oppure, per togliere ogni dubbio:</div><div><div><br></div><div>In [7]: def foo(x): print '.',; return x</div></div><div><br>
</div>
<div><div>In [8]: all([foo(x) for x in l])</div><div>. . . . . . [tanti altri puntini] .Out[8]: False</div></div><div><div><br></div><div>In [9]: all(foo(x) for x in l)</div><div>.Out[9]: False</div></div><div><br></div>
<div>
<br></div></div><div>nel primo caso mi sa che l'interprete genera la lista che poi č passata a `all`. Nel secondo invece č sufficientemente sveglio da fare la cosa giusta. La vedo un po' come la differenza tra range e xrange.</div>
<div><br></div><div>Scusate se per voi era ovvio, per me non lo era :P</div><div><br></div><div>ciao,</div><div>alberto</div></div>