Re: Transpose to multiple lists
- To: mathgroup at smc.vnet.net
- Subject: [mg55771] Re: Transpose to multiple lists
- From: dh <dh at metrohm.ch>
- Date: Wed, 6 Apr 2005 03:11:00 -0400 (EDT)
- References: <d2tf20$qk8$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Konstant,
here is a short, but cryptic solution:
t={{2, 3}, {1, 2, 3}};
Flatten[ (i = 1; {i++, #} & /@ #) & /@ t , 1]
Out:{{1, 2}, {2, 3}, {1, 1}, {2, 2}, {3, 3}}
Explenation:
We are using two nested pure function:
The inner one f1: {i++,#}& replaces every Integer by a list of
{Index,Integer} and increments the index.
The outer one f2: (i=1; f1 /@ #)& resets the index to 1 and then maps f1
to its argument (This will be a single list of integers.)
f2 is then mapped to the list of list of integers.
Because we now have an additional level in the nesting of lists, like:
{{{1, 2}, {2, 3}}, {{1, 1}, {2, 2}, {3, 3}}}
we remove the superflous nesting by Flatten.
Sincerely, Daniel
konstantpi at mail15.com wrote:
> First Q:Transpose to multiple lists
> a={3,6,3,2}
> b={9,8,7,6}
> Join[Transpose[{Range[Length[a]], a}],Transpose[{Range[Length[b]], b}]]
>
> Out[]={{1, 3}, {2, 6}, {3, 3}, {4, 2}, {1, 9}, {2, 8}, {3, 7}, {4, 6}}
> what are the concise solutions other than this dumby solution
>
> Second Question: transposing Range to every sublist
> lst={{4,6,3},{6,8,7,3},{9,4}}
> how could i obtain the output:
> {{1,4},{2,6},{3,3},{1,6},{2,8},{3,7},{4,3},{1,9},{2,4}}
> thanks
> konstant.
>