[Date Index]
[Thread Index]
[Author Index]
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
>
Prev by Date:
**Re: Getting stuck with finding an elegant solution without global variables**
Next by Date:
**Re: Some assistance from seasoned users.**
Previous by thread:
**Re: List Manipulation**
Next by thread:
**Re: List Manipulation**
| |