<div dir="ltr"><div>Un'altra cosa che mi spiazza e' la seguente: sono abituato a manipolare e trasformare array immutabili, in cui ogni trasformazione ti ritorna una copia dell'array di partenza, per cui ci puoi fare le piu' immani schifezze senza effetti collaterali.</div>
<div><br></div><div>In Python le liste sono mutabili e c'e' ben poco che si possa fare senza mutarle manipolandole, per cui in un metodo che riceve una lista in ingresso mi sono trovato spesso a copiarle in una variabile locale prima di lavorarci sopra:</div>
<div> import copy</div><div> def yada(foo):</div><div> bar = copy.copy(foo)</div><div> # ecc.</div><div> </div><div>Usare un array.array non cambia le cose di fatto, introducendo tutta un'altra categoria di limitazioni. Le tuple sono immutabili, ma non funzionano nel senso che ho spiegato sopra (si', lo so, per la append potrei creare una nuova tupla e passarle in ingresso una lista concatenata della vecchia tupla e del nuovo elemento, ma non mi sembra il modo in cui il BDFL le ha intese).</div>
<div> </div><div>Per cui la mia domanda e', quando volete manipolare strutture tipo array senza mutarle o mutandole in copia:</div><div>1) le copiate all'inizio come dicevo sopra</div><div>2) non usate liste, ma tuple, ma poi come compensate la mancanza di append e remove (sembra una contraddizione in termini ma non lo e', basterebbe che append e remove ritornino nuove strutture dati, copie dell'originale)</div>
<div>3) vi toccate (cit)</div><div><br></div><div>Ho come la sensazione che Marco dira': usa una comprehension, che non e' una cattiva idea, ci mancherebbe, ma le comprehension mal si prestano quando l'algoritmo che stai implementando e' modellato su append() e remove() o sbaglio?</div>
<div><br></div><div>Grazie e ciao</div><div>Giuliano</div><div><br></div><div><br></div>-- <br>Piergiuliano Bossi<br>Blog: <a href="http://thinkingbox.wordpress.com/" target="_blank">http://thinkingbox.wordpress.com/</a><br>
Twitter: <a href="http://twitter.com/thinkingbox" target="_blank">http://twitter.com/thinkingbox</a> (English)<br>Twitter: <a href="http://twitter.com/scatolapensante" target="_blank">http://twitter.com/scatolapensante</a> (Italiano)<br>
<div>Google+: <a href="https://plus.google.com/u/0/108187981162465525118" target="_blank">https://plus.google.com/u/0/108187981162465525118</a></div>
</div>