Re: List Manipulation
- To: mathgroup at smc.vnet.net
- Subject: [mg124922] Re: List Manipulation
- From: James Stein <mathgroup at stein.org>
- Date: Sun, 12 Feb 2012 05:03:26 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201202111136.GAA16379@smc.vnet.net>
What you want is curiously similar to the output of Map [ { # } & , Flatten [ l1 l2 ] ] which yields {{a},{2 a},{3 a},{4 b},{5 b},{6 b},{7 c},{8 c},{9 c}} But this ersatz solution has multiplied your numbers with your letters, which I think is not what you want. If Mathematica allowed you to override multiplication (which I think it does not) then this might be close to what you want; you could override multiplication: Times [ a_, b_ ] := { a, b }; The following function, neither simple nor elegant, and unlikely to neatly expand to accommodate whatever problem underlies your simple question: f [ x_ ] := Which [ Head[x/a] === Integer, {x/a, a}, Head[x/b] === Integer, {x/b, b}, Head[x/c] === Integer, {x/c, c}, True, {x}]; Would allow a one liner: Map [ f [ # ] &, Flatten [ l1 l2 ] ] given exactly the output you wish. But alas, I fear all this is likely worse than your own solution. On Sat, Feb 11, 2012 at 3:36 AM, Murta <rodrigomurtax at gmail.com> wrote: > Hi All > > I'm looking some better solution for the below list manipulation: > l1={a,b,c}; > l2={{1,2,3},{4,5,6},{7,8,9}}; > output = {{a,1},{a,2},{a,3},{b,4},{b,5},{b,6},{c,7},{c,8},{c,9}} > It's a simple distributions of terms. > > I used this solution, but I think it's not an elegant one: > > f[a_, b_] := Flatten[{a, #}] & /@ b; > MapThread[f, {l1, l2}] // Flatten[#, 1] & > > Some clue? > Maybe with Outer or Inner? > Thanks in advance! > Murta >
- References:
- List Manipulation
- From: Murta <rodrigomurtax@gmail.com>
- List Manipulation