Re: Cases to Select ?
- To: mathgroup at smc.vnet.net
- Subject: [mg73961] Re: Cases to Select ?
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sat, 3 Mar 2007 03:55:33 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <esb3p6$3dr$1@smc.vnet.net>
Mr Ajit Sen wrote:
> Dear MathGroup,
>
> Consider the following list:
>
> A={{1, 4, 5}, {3, -6, 1}, { 2, 0, 4}, {4, 3, 8},
> {-5, 1, 4}, {3, 7, 4},{4,6,0,3}, {-3, 4, 3, 8, 1}}
[snip]
> Now, say I'd like to pick out those sublists that do
> not contain 3 and 4. Then I don't get the result
> {3,-6,1} with
>
> NotA34S=Select[A, (FreeQ[#, 3] && FreeQ[#, 4]) &]
>
> nor with
> Select[A, (FreeQ[#, 3] || FreeQ[#, 4]) &]
> nor with
> Complement[A,A34S]
>
> Why not? I don't think !MemberQ exists. Looking at
> all negations in the Help browser, I guess that Unsame
> could do the trick but am unable to apply it.
In your original list, every sublist contains either a 3 or a 4 or both.
In[1]:=
A = {{1, 4, 5}, {3, -6, 1}, {2, 0, 4}, {4, 3, 8},
{-5, 1, 4}, {3, 7, 4}, {4, 6, 0, 3},
{-3, 4, 3, 8, 1}};
In[2]:=
NotA34S = Select[A, FreeQ[#1, 3] && FreeQ[#1, 4] & ]
Out[2]=
{}
In[3]:=
NotA34S = Select[A, FreeQ[#1, 3] || FreeQ[#1, 4] & ]
Out[3]=
{{1, 4, 5}, {3, -6, 1}, {2, 0, 4}, {-5, 1, 4}}
Now let's try with a list that contains at least one sublist without 3
and 4,
In[4]:=
A = {{1, 4, 5}, {3, -6, 1}, {2, 0, 4}, {4, 3, 8},
{-5, 1, 4}, {3, 7, 4}, {4, 6, 0, 3},
{-3, 4, 3, 8, 1}, {-3, -4}};
In[5]:=
NotA34S = Select[A, FreeQ[#1, 3] && FreeQ[#1, 4] & ]
Out[5]=
{{-3, -4}}
In[6]:=
NotA34S = Select[A, FreeQ[#1, 3] || FreeQ[#1, 4] & ]
Out[6]=
{{1, 4, 5}, {3, -6, 1}, {2, 0, 4}, {-5, 1, 4},
{-3, -4}}
> Finally, how could I do it using Cases
>
> NotA34C= Cases[A, pattern??] ?
>
You could try something along the line
In[7]:=
NotA34C = Cases[A, {___, x_, ___} /; x == 3 || x == 4]
Out[7]=
{{1, 4, 5}, {3, -6, 1}, {2, 0, 4}, {4, 3, 8},
{-5, 1, 4}, {3, 7, 4}, {4, 6, 0, 3},
{-3, 4, 3, 8, 1}}
In[8]:=
NotA34C = DeleteCases[A, {___, x_, ___} /;
x == 3 || x == 4]
Out[8]=
{{-3, -4}}
HTH,
Jean-Marc