Re: Lists

*To*: mathgroup at yoda.physics.unc.edu*Subject*: Re: Lists*From*: John Lee <lee at math.washington.edu>*Date*: Fri, 29 Jan 93 12:48:49 -0800

neilb at physics.su.oz.au (RiemannZeta(s)) write: > >In[5]:= l={x,z,y,0,0} > > > >Out[5]= {x, z, y, 0, 0} > > > >In[6]:= l/.l[[Length[l] ]]->l[[Length[l] ]]+1 > > > >Out[6]= {x, z, y, 1, 1} > > > which is curious. Does anybody know why > this doesn't produce > {x,y,z,0,1}? Since the construct l/.b->c evaluates b and c before applying the rule, and since l[[ Length[l] ]] has the value 0, your expression In[6] is equivalent to l /. 0 -> 1 This explains why you got the result you did. One function you might use here is AddTo (which can be abbreviated +=). For example: In[4]:= l={x,z,y,0,0} Out[4]= {x, z, y, 0, 0} In[5]:= l[[ Length[l]] ] += 1 Out[5]= 1 In[6]:= l Out[6]= {x, z, y, 0, 1} If you're always adding exactly 1, you might also look at the functions Increment and PreIncrement. Jack Lee Dept. of Mathematics University of Washington Seattle, WA