Re: Nested Lists, Definition and Evaluation.
- To: mathgroup at smc.vnet.net
- Subject: [mg59761] Re: [mg59729] Nested Lists, Definition and Evaluation.
- From: "David Park" <djmp at earthlink.net>
- Date: Sat, 20 Aug 2005 03:13:52 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
When making assignments to arrays you have to use b[[1,1,1,1]]=2 I often write Part[b,1,1,1,1]=2 just because it is clearer and gets rid of extra brackets. With the Part assignment, Mathematica expects the first argument, in this case 'b', to be a Symbol. b[[1,1]][[1,1]] is equivalent to Part[Part[b, 1, 1], 1, 1] and the first argument is not a Symbol. b[[1,1]][[1,1]] is perfectly all right for retrieving values but not for setting values. I'm sure that this is a trap that many of us have fallen into. David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Alexander [mailto:beginning.physst at mail.ru] To: mathgroup at smc.vnet.net Hello! Here is simple example of defining list: b = Table[Symbol["a" <> ToString[i] <> ToString[j]], {i, 2}, {j, 2}]; a11 = IdentityMatrix[2]; b[[1,1]][[1,1]] Output will be number 1. Then we type another command: b[[1,1]][[1,1]]=2 wich cause error message. If we type ?b the structure of b can be seen: Global`b b = {{a11, a12}, {a21, a22}} And I wonder, how to change elements of aij from b? It's interesing question about how mathematica think things and how evaluate them. So, the questions are: 1) Why code above produce error message? 2) What difference between b[[1,1]][[1,1]] and b[[1,1,1,1]] notation? Here is an example concerning the second question: This code doesn't produce an error: a11 = IdentityMatrix[2]; b = Table[Symbol["a" <> ToString[ i] <> ToString[j]], {i, 2}, {j, 2}]; b[[1, 1, 1, 1]] = 3 but this does: a11 = IdentityMatrix[2]; b = Table[Symbol["a" <> ToString[ i] <> ToString[j]], {i, 2}, {j, 2}]; b[[1, 1]][[1, 1]] = 3 Why? Sorry for my obscure speech, and thanks for your answers!