MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: One thing in two ways, with different result.
  • Next by Date: Re: Export PDF plot or Save Selection As -- big troubles with
  • Previous by thread: Replacing elements in a list
  • Next by thread: Re: Replacing elements in a list