Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

Re: List manipulation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg73267] Re: List manipulation
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Fri, 9 Feb 2007 02:21:03 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <eqep4g$5dk$1@smc.vnet.net>

sepp wrote:
> hello,
> I would like to combine list elements in the following way:
> 
> I have a list with
> liste={{a1,a2,a3},{b1,b2,b3},{c1,c2,c3},.....}
> and a single element {e}
> 
> 
> I would to add the element {e} to each sublist to get something like
> liste_new={ {a1,a2,a3,e},{b1,b2,b3,e},{c1,c2,c3,e},.....}
> so that finally I can apply a function f on the list
> liste_manipulated={f[ {a1,a2,a3,e}],f[{b1,b2,b3,e}],f[{c1,c2,c3,e}],.....}
> 
> I had a look at thread, mapthread, inner, outer, but nothing really
> seems to fit...
> thank you in advance for useful comments!
> 
> 

The following expression should fulfill your needs.

In[1]:=
lst = {{a1, a2, a3}, {b1, b2, b3}, {c1, c2, c3}, {d1, d2, d3}};

In[2]:=
f /@ Transpose[Join[Transpose[lst], {Table[e, {Length[lst]}]}]]

Out[2]=
{f[{a1, a2, a3, e}], f[{b1, b2, b3, e}], f[{c1, c2, c3, e}], f[{d1, d2, 
d3, e}]}

The following in/out are just to describe how it works.

In[3]:=
Length[lst]

Out[3]=
4

In[4]:=
Transpose[lst]

Out[4]=
{{a1, b1, c1, d1}, {a2, b2, c2, d2}, {a3, b3, c3, d3}}

In[5]:=
Table[e, {Length[lst]}]

Out[5]=
{e, e, e, e}

In[6]:=
Join[Transpose[lst], Table[e, {Length[lst]}]]

Out[6]=
{{a1, b1, c1, d1}, {a2, b2, c2, d2}, {a3, b3, c3, d3}, e, e, e, e}

In[7]:=
Join[Transpose[lst], {Table[e, {Length[lst]}]}]

Out[7]=
{{a1, b1, c1, d1}, {a2, b2, c2, d2}, {a3, b3, c3, d3}, {e, e, e, e}}

In[8]:=
Transpose[Join[Transpose[lst], {Table[e, {Length[lst]}]}]]

Out[8]=
{{a1, a2, a3, e}, {b1, b2, b3, e}, {c1, c2, c3, e}, {d1, d2, d3, e}}

In[9]:=
f /@ Transpose[Join[Transpose[lst], {Table[e, {Length[lst]}]}]]

Out[9]=
{f[{a1, a2, a3, e}], f[{b1, b2, b3, e}], f[{c1, c2, c3, e}], f[{d1, d2, 
d3, e}]}

Regards,
Jean-Marc


  • Prev by Date: Re: Showing that a hypergeometric expression is 0?
  • Next by Date: Re: Re: Mathematica, Quad Core, Linux
  • Previous by thread: Re: List manipulation
  • Next by thread: Sparse Arrays question