Re: How can I make a sequence that includes lists?
- To: mathgroup at smc.vnet.net
- Subject: [mg125469] Re: How can I make a sequence that includes lists?
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at ymail.com>
- Date: Thu, 15 Mar 2012 00:26:26 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jjpbbn$p9r$1@smc.vnet.net>
On Wed, 14 Mar 2012 05:46:31 -0000, JasonE <ebaughjason at gmail.com> wrote:
> Hello folks,
>
> How can I make a sequence that includes lists?
> Ex:
> Sequence[apple, {rock, tree), {ocean, lake}]
>
> Here is my specific problem:
>
> I use this function to make associative arrays:
> IndexedVariable[var_,indicesValues__]:=With[{dict=List[indicesValues]},Scan[(var[#[[1]]]=#[[2]])&,dict]]
>
> (I got it from:
> http://www.physic.ut.ee/~kkannike/english/prog/mathematica/index.html#true_dict)
>
>
> Here is an example of how it takes arguments:
> IndexedVariable[f, {1, "a"}, {2, "b"}, {3, "c"}]
>
> In[2]:= f[1]
> Out[2]= a
>
> In[3]:= f[2]
> Out[3]= b
> ect...
>
> You can imagine, some associations are too long to type out by hand.
> Ex: {1, x1}, {2, x2}...{1000, x1000}
>
> When I make these associations programtically, I get a list back:
> {{1, x1}, {2, x2},...{1000, x1000}}
>
> IndexedVariable[f,{{1, x1}, {2, x2}, {3, x3}...{1000, x1000}}]
> does not work.
>
> It wants a sequence.
>
>
> How can I make a sequence that includes lists?
>
> Thanks,
> Jason
>
Just use
IndexedVariable[f, Sequence @@ lst]
or try
IndexedVariable2[var_, lst_List] := (
MapThread[
(var[#1] = #2) &,
Transpose[lst]
];
);
IndexedVariable2[var_, keys__] := IndexedVariable[var, {keys}];
which is both faster than IndexedVariable and accepts either lists or
sequences of keys.