MathGroup Archive 2005

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

Search the Archive

Re: arrange lists side by side


Somehow, my post from yesterday didn't include the actual line of Mathematica code. So here it is again.

Your problem immediately made me think of using MapIndexed[ ] which uses a second parameter (#2) to refer to the position of each element that's being Mapped onto.  I use that position information to refer to the appropriate member of the shorter list. ( There's an inelegant  detail with subtracting 1 inside the Mod[ ] and adding 1 outside the Mod[ ], as well as needing Sequence[] to get the bracketing as desired, but I've grown use to these details with MapIndexed[ ]. )

So, using your a and b as defined:

In[] = MapIndexed[{#,  Sequence @@ a[[ Mod[#2-1,Length[a]] +1]] }&, b ]

john kiehl

On Thursday, April 28, 2005 2:40 AM, marloo3 at mail15.com wrote:
>Hi
>is there a way to spread out a small list over a bigger list recurrently like 
>this:
>a={28, 30, 17};
>b={1, 2, 9, 4, 5, 7, 3, 8};
>to give the output:
>{{1,28},{2,30},{9,17},{4,28},{5,30},{7,17},{3,28},{8,30}};
>the number of items in "b" do not neccesary  multiples of the number of items 
>in "a"
>mark
>
>okay this is my approach
>
>a={28,30,17};
>b={1,2,9,4,5,7,3,8};
>aa={};aa=Table[Join[aa,a],{i,Length[b]/Length[a]}]
>
>Out[]=
>{{28,30,17},{28,30,17}}
>
>frc=Mod[Length[b],Length[a]];
>gg=Flatten[Join[aa,Part[a,{1,frc}]]];
>Transpose[Join[{b},{gg}]]
>
>Out[]=
>{{1,28},{2,30},{9,17},{4,28},{5,30},{7,17},{3,28},{8,30}}
>
>----------------------------------------------------------------------
>
>
>



  • Prev by Date: Re: Interpreting output
  • Next by Date: A bug in the documentation?
  • Previous by thread: Re: Reading from a file.
  • Next by thread: A bug in the documentation?