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