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