Re: Map function which adds last two numbers of a list
- To: mathgroup at smc.vnet.net
- Subject: [mg73567] Re: Map function which adds last two numbers of a list
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 22 Feb 2007 04:28:11 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <ergqrb$jg0$1@smc.vnet.net>
Christopher Pike wrote:
> Hi,
> Consider this:
>
> z = {{1,4,5,6},{7,8,9,1},{1,2,4,3}}
>
> I'd like to Map a function onto z which would replace the last two items
> with their sum:
>
> {{1,4,11},{7,8,10},{1,2,7}}
>
> I could easily use the Table command to construct this new table, but it
> would be nicer if I new how to Map some function on z that would produce
> the same result.
>
> Any suggestions.
>
> Thanks, Chris Pike
>
Hi Chris,
You could use a transformation rule as in
In[1]:=
z = {{1, 4, 5, 6}, {7, 8, 9, 1}, {1, 2, 4, 3}};
In[2]:=
z /. {u___, v_, (t_)?NumberQ} -> {u, v + t}
Out[2]=
{{1, 4, 11}, {7, 8, 10}, {1, 2, 7}}
And here is a version with a pure function mapped over the list x
In[3]:=
(Flatten[{Drop[#1, -2], Plus @@ Take[#1, -2]}] & ) /@ z
Out[3]=
{{1, 4, 11}, {7, 8, 10}, {1, 2, 7}}
Regards,
Jean-Marc