MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Nested list - adding to each entry

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113033] Re: Nested list - adding to each entry
  • From: "Nasser M. Abbasi" <nma at 12000.org>
  • Date: Tue, 12 Oct 2010 04:22:42 -0400 (EDT)
  • References: <i8ukm0$odi$1@smc.vnet.net>
  • Reply-to: nma at 12000.org

On 10/11/2010 2:16 AM, Sebastian Schmitt wrote:
> Dear all!
>
> (I recycle my disclaimer.)
>
> I'm new to Mathematica with a background mostly in C++. Many times I
> have the impression that my style is not natural-Mathematica
> (Mathematicaesque so to say).
>
> I want to add something (an absolute position) to each entry (a relative
> position) of a list. This works as expected in the 1D case:
>
> In[43]:= 1 + {2, 3, 4}
>
> Out[43]= {3, 4, 5}
>
> But the 2D case is different because my list of relative positions is
> interpreted as a matrix:
>
> In[57]:= {1, 2} + {{a, b}, {c, d}}
>
> Out[57]= {{1 + a, 1 + b}, {2 + c, 2 + d}}
>
> I would like to get
>
> {{1 + a, 2 + b}, {1 + c, 2 + d}}
>
> instead.
>
> I know I can achieve it with the help of a pure function:
>
> In[58]:= Map[# + {1, 2}&, {{a, b}, {c, d}}]
>
> Out[58]= {{1 + a, 2 + b}, {1 + c, 2 + d}}
>
> Is there a builtin function that does the same? I'm somehow reluctant to
> use pure functions too much. Is my concern unfounded?
>
> Thanks in advance,
>
> Sebastian
>

Your solution is nice. Pure functions can be fun (when used safely :)

There are many other ways to do this, may be

Clear[a, b, c, d];
x = {1, 2};
y = {{a, b}, {c, d}};

Function[x,Inner[Plus,X,x,List]]/@ y

MapIndexed[(#+x)&,y]

Table[Inner[Plus,x,y[[i, All]],List],{i, 1, Length[y]}]

and I am sure many more ways.

--Nasser







  • Prev by Date: Re: If without else
  • Next by Date: Re: local variables - Module, For loop
  • Previous by thread: Re: Nested list - adding to each entry
  • Next by thread: Re: Nested list - adding to each entry