R: [PIPython] Spigolo duro! o testa dura? DIZ. e LISTE

Pierluigi pierluigi.fabbris
Dom 13 Nov 2005 23:28:05 CET


Ho guardato il codice che hai dato pare perfetto, ma facendo delle prove

DIZ[“c”][3]=1

Viene messo un uno davanti allo zero della quarta serie di zero della
lettera c.

DIZ[“c”][3][2]=1

Allora si mette un uno nel terzo numero di tutte le serie di zero della
lettera c.

L’interazione degli indici nel Diz[“c”][3][2] la concatenazione che anche a
me pare perfetta deve avere un errore. Devo anch’io riguardare l’errore è un
po’ misterioso. Se trovi la risposta prima di me fammi sapere sono curioso.

 

 

  _____  

Da: python-bounces a lists.python.it [mailto:python-bounces a lists.python.it]
Per conto di MBposta
Inviato: domenica 13 novembre 2005 19.18
A: Gli utilizzatori italiani di Python
Oggetto: [PIPython] Spigolo duro! o testa dura? DIZ. e LISTE

 

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

 

 


 
 
 --
 Email.it, the professional e-mail, gratis per te: http://www.email.it/f
 
 Sponsor:
 Regala la tua Photo-CD in una bella custodia! Con Nierle è facile, veloce ed economico! Clicca qui
 Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?midA85&d-11
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.zope.it/pipermail/python/attachments/20051113/74182914/attachment.htm


More information about the Python mailing list