[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