MathGroup Archive 2013

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

Search the Archive

Distribute one list element over another

  • To: mathgroup at
  • Subject: [mg130477] Distribute one list element over another
  • From: Timm Reinisch <timm.reinisch at>
  • Date: Sat, 13 Apr 2013 20:38:35 -0400 (EDT)
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:


It's difficult to explain what I want to achieve and maybe if I could 
describe it better I  would have been able to google a solution.

My problem deals with lists of lists of the form {a1, a2,  a3, {m1, m2, 
m3, m4}}


data =
{a1, a2,  a3, {m1, m2, m3, m4}},
{b1, b2,  b3, {n1, n2, n3, n4}},
{c1, c2,  c3, {o1, o2, o3, o4}},
{d1, d2,  d3, {p1, p2, p3, p4}},

I want is to go over the list and transform each of the sublists {a1, 
a2,  a3, {m1, m2, m3, m4}} into a list consisting of pairs {{a1, m1},  
{a1, m2}, {a1, m3}, {a1, m4}}
so that for the list given above I get

{{a1, m1},  {a1, m2}, {a1, m3}, {a1, m4}},
{{b1, n1},  {b1, n2}, {b1, n3}, {b1, n4}},
{{c1, o1},  {c1, o2}, {c1, o3}, {c1, o4}},
{{d1, p1},  {d1, p2}, {d1, p3}, {d1, p4}},

I think it could be possible to do this using two nested map operations 
/@, but I don't find out how to do so exactly, because I run into 
trouble with the scope of the #

What I'm doing at the moment is that I use a module:

verteilen[liste_] := Module[{},
  {#[[1]], liste[[1]]} & /@ liste[[4]]

and map it over the list I want to transform:

verteilen[#] & /@ data

I'm searching for a much mor elegant way to achive this transformation, 
any hints?

Thanks and best regards


  • Prev by Date: Re: Arranging disks (or any object for that matter) be
  • Next by Date: Re: Can I join please?
  • Previous by thread: Trying to suspend or pause execution of a program.
  • Next by thread: Re: Distribute one list element over another