RE: Understanding Flatten

• To: mathgroup at smc.vnet.net
• Subject: [mg46365] RE: [mg46314] Understanding Flatten
• From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
• Date: Mon, 16 Feb 2004 23:41:51 -0500 (EST)
• Sender: owner-wri-mathgroup at wolfram.com

```>-----Original Message-----
>From: Harold.Noffke at wpafb.af.mil [mailto:Harold.Noffke at wpafb.af.mil]
To: mathgroup at smc.vnet.net
>Sent: Saturday, February 14, 2004 3:58 AM
>To: mathgroup at smc.vnet.net
>Subject: [mg46365] [mg46314] Understanding Flatten
>
>
>Mathematica 5.0.1 on Windows 2000
>MathGroup:
>
>In my study of Flatten, the Mathematica Book gives this example ...
>
>	You can use Flatten to "splice" sequences of elements into lists
>	or other expressions.
>
>	In[5]:= Flatten[ {a, f[b, c], f[a, b, d]}, 1, f ]
>
>	Out[5]= {a,b,c,a,b,d}
>
>I modified In[5] as follows ...
>
>	In[1]:= Flatten[ { {a, f[b, c], f[a, b, d]}, {g, f[e, g]} }]
>
>	Out[1]= {a, f[b, c], f[a, b, d], g, f[e, g]}
>
>I don't see why adding {g, f[e, g]} as a second list to the
>In[5] example
>unflattens Flatten's answer.  What am I misunderstanding?
>
>Thanks.
>Harold
>

Harold,

not quite clear, what you want to attain;
more possibilities:

In[7]:=
Flatten[#, 1, f] & /@ {{a, f[b, c], f[a, b, d]}, {g, f[e, g]}}
Out[7]=
{{a, b, c, a, b, d}, {g, e, g}}

or, more robust

In[26]:=
Map[Flatten[#, 1, f] &, {{a, f[b, c], f[a, b, d]}, {g, f[e, g]}}, {1, -3}]
Out[26]=
{{a, b, c, a, b, d}, {g, e, g}}

In[11]:=
FlattenAt[{{a, f[b, c], f[a, b, d]}, {g, f[e, g]}},
{{1, 2}, {1, 3}, {2, 2}}]
Out[11]=
{{a, b, c, a, b, d}, {g, e, g}}

or, if you liked this

In[14]:=
FlattenAt[{{a, f[b, c], f[a, b, d]}, {g, f[e, g]}},
{{1}, {1, 2}, {1, 3}, {2}, {2, 2}}]
Out[14]=
{a, b, c, a, b, d, g, e, g}

You may automate that a bit:

In[36]:=
FlattenAt[#, Position[#, f[___]]] &[{{a, f[b, c], f[a, b, d]}, {g, f[e,
g]}}]
Out[36]=
{{a, b, c, a, b, d}, {g, e, g}}

or, if you preferred

In[37]:=
FlattenAt[#, Position[#, (f | List)[___], Infinity]] &[{{a, f[b, c],
f[a, b, d]}, {g, f[e, g]}}]
Out[37]=
{a, b, c, a, b, d, g, e, g}

--
Hartmut Wolf

```

• Prev by Date: Re: Solve or LinearSolve or ...?
• Next by Date: Re: Solve or LinearSolve or ...?
• Previous by thread: RE: Understanding Flatten