RE: Building List
- To: mathgroup at smc.vnet.net
- Subject: [mg48069] RE: [mg48015] Building List
- From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
- Date: Tue, 11 May 2004 05:19:52 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
- Thread-topic: [mg48015] Building List
>-----Original Message----- >From: Bruce W. Colletti [mailto:bcolletti at compuserve.com] To: mathgroup at smc.vnet.net >Sent: Friday, May 07, 2004 10:30 AM >To: mathgroup at smc.vnet.net >Subject: [mg48069] [mg48015] Building List > > >Re Mathematica 5.0.1.0. > >I have a list of lists -- e.g., L = { {1,2},{3,4,5,6},{7,8} } -- and >want to replace element-lists (whose length exceeds 2) with >another list >built from that element. All else is untouched. > >For instance, using L above, replace {3,4,5,6} with {3,4}, >{3,5}, {3,6}. > This transforms L to the desired form { {1,2}, {3,4}, {3,5}, {3,6}, >{7,8} }. > >Although I can do this using Sow and Reap, am hoping there's an easier >way using rules (/.). In general, I want to replace those >L-elements x >(that meet a criterion) with foo[x]. > >Thanks. > >Bruce > > I have to apologize for my nonsensious first reply (to a question you didn't pose). So here something better: In[2]:= Thread[{First[#], Rest[#]}] & /@ {{1, 2}, {3, 4, 5, 6}, {7, 8}} Out[2]= {{{1, 2}}, {{3, 4}, {3, 5}, {3, 6}}, {{7, 8}}} In[3]:= Replace[{{1, 2}, {3, 4, 5, 6}, {7, 8}}, {a_, b__} :> Thread[{a, {b}}], {1}] Out[3]= {{{1, 2}}, {{3, 4}, {3, 5}, {3, 6}}, {{7, 8}}} -- Hartmut Wolf