Re: How can I make a sequence that includes lists?
- To: mathgroup at smc.vnet.net
- Subject: [mg125470] 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:47 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jjpbbn$p9r$1@smc.vnet.net> <op.wa5uvcqc6cr3ji@core2.lan>
On Wed, 14 Mar 2012 12:41:26 -0000, Oleksandr Rasputinov <oleksandr_rasputinov at ymail.com> wrote: > 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. Sorry: IndexedVariable2[var_, keys__] := IndexedVariable[var, {keys}]; in the above should have been IndexedVariable2[var_, keys__] := IndexedVariable2[var, {keys}]; (I renamed my version of the function before posting but forgot to update the definition.)