[PIPython] Spigolo duro! o testa dura? DIZ. e LISTE
Alex Martelli
aleaxit
Lun 14 Nov 2005 02:21:30 CET
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
More information about the Python
mailing list