Re: Replacing elements in a list
- To: mathgroup at smc.vnet.net
- Subject: [mg90117] Re: Replacing elements in a list
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 29 Jun 2008 05:37:07 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <g451tk$ppr$1@smc.vnet.net>
yedidel at gmail.com wrote: > Hello, > > I have a list of pairs that looks like this: > > {{1,2},{3,4},{1,{1,2}}} > > Each pair element can be a pair by itself. > > I have another list which lists all elements possible: > {1,2,3,4,{1,2}} > > Now I want to create a list of rules that will take the element list > and give it a running number ({1,2} will be 5 in this example) > > after that I want to apply those rules to the pair list BUT that will > do it only from the second level down. This means that the final > result should be: > > {{1,2},{3,4},{1,5}} > without the first pair {1,2} changing to 5 because it is a pair and > not an element. Assuming I have correctly interpreted your specifications, Replace[list1, Cases[list2, x : {_, _} :> (x -> Sequence @@ Flatten@Position[list2, x])], {2}] should do what you wish. For instance, list1 = {{1, 2}, {3, 4}, {1, {1, 2}}}; list2 = {1, 2, 3, 4, {1, 2}}; Replace[list1, Cases[list2, x : {_, _} :> (x -> Sequence @@ Flatten@Position[list2, x])], {2}] {{1, 2}, {3, 4}, {1, 5}} Regards, -- Jean-Marc