[PIPython] Spigolo duro! o testa dura? DIZ. e LISTE
MBposta
mbposta
Dom 13 Nov 2005 19:18:38 CET
Ho urtato nuovamento contro uno spigolo!
Premessa:
ho sintetizzato l'errore con questo programmino (nel programma reale i dati li ricavo dal disco con pickle) :
import copy
DIZ={}
chiavi="abcde"
lista=[[0,0,0,0]]*5
for x in range(len(chiavi)):
DIZ[chiavi[x]]=copy.deepcopy(lista)
print chiavi[x],DIZ[chiavi[x]]
DIZ["c"][3][2]=1 : operazione di modifica su un solo elemento
print
for x in range(len(chiavi)):
print chiavi[x],DIZ[chiavi[x]]
RISULTATO:
PRIMA
a [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
b [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
c [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
d [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
e [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
DOPO
a [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
b [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
c [[0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0]] #---> ERRORE
d [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
e [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
DOMANDA:
perche' mi modifica tutti i valori e non soltanto quello rihiesto il DIZ["c"][3][2] ?
Grazie a chi mi fa luce!
Mauro
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.zope.it/pipermail/python/attachments/20051113/e4063307/attachment.html
More information about the Python
mailing list