Re: List element manipulation
- To: mathgroup at smc.vnet.net
- Subject: [mg25457] Re: [mg25408] List element manipulation
- From: Matt.Johnson at autolivasp.com
- Date: Sun, 1 Oct 2000 02:44:40 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Martin-
I think the problem you are running into is that Decrement or Increment
need a variable to change and store, not just a number. Here's an easy way
to decrease the last number by 1, however:
In[17]:=
lst = Range[116, 164, 8]
Out[17]=
{116, 124, 132, 140, 148, 156, 164}
In[20]:=
lst1 = lst /. {h___, t_} -> {h, t - 1}
Out[20]=
{116, 124, 132, 140, 148, 156, 163}
In[21]:=
lst2 = lst1 /. {h___, t_} -> {h, t - 1}
Out[21]=
{116, 124, 132, 140, 148, 156, 162}
-matt
"Martin Rommel" <Martin_Rommel at mac.com> on 09/28/2000 11:06:58 PM
cc:
Subject: [mg25457] [mg25408] List element manipulation
I want to decrement the last number in list. This ought to be easy, but my
initial attempts did not bear fruits:
In[40]:=
MapAt[Decrement, Range[116, 166, 8], -1]
Decrement::"rvalue": "164 is not a variable with a value, so its value
cannot be changed."
Out[40]=
{116, 124, 132, 140, 148, 156, 164--}
Do I need to use ReplacePart? That works but still gives me an error!
In[53]:=
Range[116, 166, 8] // ReplacePart[#, --Last[#], -1] &
Set::"write": "Tag Last in Last[{116, 124, 132, 140, 148, 156, 164}] is
Protected."
Out[53]=
{116, 124, 132, 140, 148, 156, 163}
Different error here:
In[51]:=
Range[116, 166, 8] // ReplacePart[#, --#[[-1]], -1] &
Set::"setps": "{116, 124, 132, 140, 148, 156, 164} in assignment of
part
is not a symbol."
Out[51]=
{116, 124, 132, 140, 148, 156, 163}
Anybody out there able to enlighten me?
Thanks, Martin