Replacing list elements while retaining structure
- To: mathgroup at smc.vnet.net
- Subject: [mg73967] Replacing list elements while retaining structure
- From: "D. Grady" <D.C.Grady at gmail.com>
- Date: Sat, 3 Mar 2007 23:50:03 -0500 (EST)
Okay, so I have two lists, X and Y. X has some complex structure which is important, but the values contained in X are not important. Y has values that are important, but the structure of Y is not. I was to sequentially replace all the elements in X with the elements of Y. It's assumed that X and Y have the same total number of elements, i.e. Length[Flatten[X]] == Length[Flatten[Y]] Here is an example: In[8]:= structurize[{x,x,{{x},x},x},{1,2,3,4,5}] Out[8]= {1,2,{{3},4},5} This is what I have so far: structurize[X_List, Y_List] := ReplacePart[X, Flatten[Y], Position[X, a_ /; \ (Head[a] =!= List), Heads -> False], Table[{i}, {i, 1, Length[ Flatten[Y]]}]] /; Length[Flatten[X]] == Length[Flatten[Y]] This works fine so long as the elements of X are atomic expressions; however, if there is an element of X which is a more complicated expression, like x^2, then this function does not work as desired because the pattern in Position[] matches x^2 as well as x and 2. Is there a way to avoid matching parts of a subexpression? Is there a better way to approach the problem from the get-go? Thanks in advance!
- Follow-Ups:
- Re: Replacing list elements while retaining structure
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- Re: Replacing list elements while retaining structure