Re: Replacing elements in a list
- To: mathgroup at smc.vnet.net
- Subject: [mg90121] Re: [mg90092] Replacing elements in a list
- From: Carl Woll <carlw at wolfram.com>
- Date: Sun, 29 Jun 2008 05:37:52 -0400 (EDT)
- References: <200806280954.FAA26296@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.
>
>
>
Use Replace with a level specification. For your example:
list = {{1, 2}, {3, 4}, {1, {1, 2}}};
Get the elements:
elements = Union@Flatten[list, 1]
{1,2,3,4,{1,2}}
Make the rules:
rules = Thread[elements -> Range[Length[elements]]]
{1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4, {1, 2} -> 5}
Replace at level 2:
result = Replace[list, rules, {2}]
{{1, 2}, {3, 4}, {1, 5}}
Carl Woll
Wolfram Research
- References:
- Replacing elements in a list
- From: yedidel@gmail.com
- Replacing elements in a list