[PIPython] Spigolo duro! o testa dura? DIZ. e LISTE
MBposta
mbposta
Lun 14 Nov 2005 11:37:42 CET
Giusto Alex,
ma questo come avevo scritto e' un esempio.
Io carico un dizionario composto da liste e dizionari interni dal disco con
il sistema pickle. Quindi mi trovo già ad esempio una serie di liste simili
a quella incriminata ma inizialmente con valori tutti uguali a zero .
Il problema nasce quando devo modificare un solo elemento della lista come
già detto.
Come faccio ?
Grazie
Ciao
Mauro
----- Original Message -----
From: "Alex Martelli" <aleaxit a yahoo.com>
To: "Gli utilizzatori italiani di Python" <python a lists.python.it>
Sent: Monday, November 14, 2005 2:21 AM
Subject: Re: [PIPython] Spigolo duro! o testa dura? DIZ. e LISTE
>
> On Nov 13, 2005, at 10:17 AM, MBposta wrote:
>
> Il bug nel tuo codice e` molto semplice:
>
>> lista=[[0,0,0,0]]*5
>
> Questa e` una lista di 5 reference alla STESSA lista di quattro
> zeri. Quando ci chiami su deepcopy questo NON cambia, naturalmente,
> la forma del grafo dei riferimenti (sarebbe un errore tremendo se lo
> facesse). Se vuoi una lista di cinque liste DISTINTE devi costruirla
> in altro modo, ad esempio con una list-comprehension [ [0]*4 for i in
> xrange(5) ] (nota che per le liste INTERNE puoi usare l'operatore *
> grazie al fatto che i numeri sono immutabili, comunque se ti trovi
> meglio puoi usare una list comprehension anche in quel caso).
>
>
> Alex
>
>
--------------------------------------------------------------------------------
_______________________________________________
La mailing list di python.it
python a lists.python.it
http://lists.python.it/cgi-bin/mailman/listinfo/python
--------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.0/167 - Release Date: 11/11/2005
More information about the Python
mailing list