Re: Insulating data from code
- To: mathgroup at smc.vnet.net
- Subject: [mg66535] Re: Insulating data from code
- From: Peter Pein <petsie at dordos.net>
- Date: Fri, 19 May 2006 03:39:40 -0400 (EDT)
- References: <e4ekai$9av$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Ray Koopman schrieb: >>From time to time I've wanted to partition the first level of one > list, say A, the same way that another list, say B, is partitioned. > One way to do this is > > copyPartition[A_List, B_List] /; Length@A >= Length@Flatten@B := > Module[{i = 0}, Map[A[[++i]]&,B,{-1}]] > > But all the methods I've thought of have a pointer that functions > something like i in the above code. I'd like to eliminate the pointer, > because in the unlikely event that A contains an unevaluated symbol > that is the same as the name of the pointer with $ appended -- e.g., > i$, if the pointer is i -- then in the returned list that symbol will > have a numeric value assigned to it. Unique[i] doesn't help. The > only solution I see is the probabilistic one of giving the pointer a > strange (random?) name that hopefully would be very unlikely to show > up as data. But that would be giving up. Does anyone have any ideas? > Hi Ray, use Replace[]: A={a,b,c,d,e}; B={{1},{2,3},{{{4}},5}}; Ap=B/.Thread[Flatten[B]\[Rule]A] --> {{a},{b,c},{{{d}},e}} Peter