I'm questioning my reason for why the follwoing code doesn't behave as I 
thought it would upon first coding a project.

 

m = 8
n = 10
cb = [[[0, None]] * (n + 1)] * (m + 1)
cb[3][2][0] = 10

 

This last statement causes the every first element in the list to update. Is 
this becuase this method of initializing a list is just a copy of the same list 
in memory?

 

To get around this I'm now doing the folowing:

 

m = 8
n = 10
cb = [[[0,None] for x in range(n+1)] for y in range(m+1)]
cb[3][2][0] = 10


This is working by updating only the one list as I want it to. Is this an 
acceptable practice? Or should I use the standard nested for loops like you'd 
do in most other languages?

 

Any insight would be greatly appreciated.

 

Thanks,

Brian
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to