Re: How to dynamically build a list of rules
- To: mathgroup at smc.vnet.net
- Subject: [mg109169] Re: How to dynamically build a list of rules
- From: janitor048 <janitor048 at googlemail.com>
- Date: Wed, 14 Apr 2010 23:13:46 -0400 (EDT)
- References: <hq3a2h$nbr$1@smc.vnet.net> <hq414d$3c0$1@smc.vnet.net>
On Apr 14, 11:15 am, telefunkenvf14 <rgo... at gmail.com> wrote: > On Apr 13, 9:42 pm, janitor048 <janitor... at googlemail.com> wrote: > > > > > Hi there! > > > I need a somewhat larger list of substitution rules along the line of > > > subs = { name1 -> SomeFunction[name1], name2 -> > > SomeFunction[name2], ... , nameN -> SomeFunction[nameN]} > > > Obviously typing that by hand can become a little annoying. So I would > > like to have that list created dynamically, via Table[ ... ] or > > something the like. > > The problem is, I can't figure out the correct syntax for this task. > > "name1" etc. are just, well, names (variable names to be specific). > > Unfortunately I haven't been able to find a solution on the web so > > far. Any suggestions? > > > Cheers, > > Oliver > > I think Thread[] is what you want. David Park's website includes a > notebook with a notebook on evaluation control, and examples like: > > 2 a + 5 d + 3 x > %/. Thread[{a, d, x} -> {8, 3, 4}] > > or > > 2 a + 5 d + 3 x > % /. Thread[Rule[{a, d, x}, {8, 3, 4}]] > > -RG Thanks a lot for all your answers! Actually I received one more answer via "reply to author" that goes along the line of the suggestion by Albert. I'm afraid I couldn't make myself exactly clear. I really needed a way to create a list of names (with pattern "string" plus "number") dynamically and then to create a list of subsitution rules from this list. So this is the solution I've come up with by now (with help from all your suggestions): indicesToBeReplaced = ToExpression[ Table["li" <> ToString[i], {i, 1, 10} ] ] indicesReplacementRules = (# -> ComplexIndex[#]) & /@ indicesToBeReplaced This gives me a list {li1 -> ComplexIndex[li1], li2 -> ComplexIndex[li2], li3 -> ComplexIndex[li3], ...} as needed. Probably this is far from the most elegant or shortest solution, but it works.. :-) Cheers, Oliver