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