Fwd: Just one "1" in a list
- To: mathgroup at smc.vnet.net
- Subject: [mg78260] Fwd: Just one "1" in a list
- From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
- Date: Wed, 27 Jun 2007 05:24:05 -0400 (EDT)
- References: <f5j11r$d0m$1@smc.vnet.net> <467D1553.3090501@gmail.com>
Diana wrote: > Math folks, > > Can someone tell me what command I would use to pick out sublists > which contain just one "1"? > > For example, if I have the following list, > > {{1,2}, {1,3}, {2,3}, {2,1}, {1,1,2}, {1,2,2}, {2,1}}, > > I would like to just pull the terms, > > {{1,2}, {1,3}, {2,1}, {1,2,2}, {2,1}}. > > Can someone help? Thanks, Diana M. Hi Diana, One possible way is the following: we count the number of 1s in each sub-list and select the list with exactly one occurrence of 1. lst = {{1, 2}, {1, 3}, {2, 3}, {2, 1}, {1, 1, 2}, {1, 2, 2}, {2, 1}}; Pick[lst, (Count[#1, 1] & ) /@ lst, 1] ==> {{1, 2}, {1, 3}, {2, 1}, {1, 2, 2}, {2, 1}} That is (in two stages) In[2]:= sel = (Count[#1, 1] & ) /@ lst Out[2]= {1, 1, 0, 1, 2, 1, 1} In[3]:= Pick[lst, sel, 1] Out[3]= {{1, 2}, {1, 3}, {2, 1}, {1, 2, 2}, {2, 1}} Regards, Jean-Marc