Piergiuliano Bossi wrote:

> 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.
> ...

Crei la nuova lista leggendo da quella vecchia:

newl = []
for i in oldl:
   newl.append(applica_shifezze_varie_su(i))

(stessa cosa con le comprehension)

> 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:
>     import copy
>     def yada(foo):
>         bar = copy.copy(foo)
>         # ecc.
> 
> 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).
> 
> Per cui la mia domanda e', quando volete manipolare strutture tipo
> array senza mutarle o mutandole in copia:
> 1) le copiate all'inizio come dicevo sopra
> 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) 3) vi toccate (cit)
> 
> 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?
> 
> Grazie e ciao
> Giuliano
> 

Mi sfugge il caso, forse un esempio chiarirebbe... L'unico posto in cui 
vedo male il codice messo sopra รจ quello in cui si usano gli elementi 
dell'array non in sequenza ma pescando in "qua e la'"

-- 
                                       Riccardo Lemmi

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a