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