Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to do a negative pattern?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg90573] Re: How to do a negative pattern?
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 14 Jul 2008 05:21:01 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <g5dm6i$ht4$1@smc.vnet.net> <487AD9D7.8090209@gmail.com>

Jean-Marc Gulliet wrote:

> Steven Siew wrote:
> 
>> I have used the function DeleteCases which has the format
>>
>> DeleteCases[expr,pattern]
>>
>> However what I wanted is a negative pattern like
>>
>> DeleteCases[expr,negpattern]
>>
>> But I have no idea how to craft a negative pattern. Alternatively I
>> suppose I could do with a DeleteCasesNot function. Something like
>> this:
>>
>> $ cat file012.out
>> Mathematica 5.2 for Students: Microsoft Windows Version
>> Copyright 1988-2005 Wolfram Research, Inc.
>>
>> In[1]:=
>> Out[1]= {stdout}
>>
>> In[2]:= (* Write your mathematica code below *)
>>
>> In[3]:= mylist={ {1,1},{1,2},{1,3},{2,1},{2,2},{2,3} }
>>
>> Out[3]= {{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}}
>>
>> In[4]:= myselectionA = DeleteCases[mylist,{_,1}]
>>
>> Out[4]= {{1, 2}, {1, 3}, {2, 2}, {2, 3}}
>>
>> In[5]:= myselectionB = DeleteCasesNot[mylist,{_,3}]
>>
>> Out[5]= {{1, 3}, {2, 3}}
>>
>> In[6]:= (* End of mathematica code *)
>>
>> In[7]:= Quit[];
>>
>>
>> Does anyone has any idea how I could code up a DeleteCasesNot
>> function?
> 
> I do not have the slightest idea about what a "negative" pattern
> can possibly  be (at least in the context of Mathematica programming). 
> It seems that you are looking for *Cases[]*, however.
> 
>     lst = {{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}};
> 
>     Cases[lst, {_, 3}]
> 
>     DeleteCases[lst, {_, 3}]
> 
> 
>     {{1, 3}, {2, 3}}
> 
>     {{1, 1}, {1, 2}, {2, 1}, {2, 2}}

Or, perhaps, the following will match more closely what you had in mind 
when talking about "negative" patterns:


     lst = {{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}};

     DeleteCases[lst, {_, Except[3]}]

     DeleteCases[lst, {_, _?(# != 3 &)}]

     DeleteCases[lst, {_, x_ /; x != 3}]


     {{1, 3}, {2, 3}}

     {{1, 3}, {2, 3}}

     {{1, 3}, {2, 3}}


Regards,
-- Jean-Marc


  • Prev by Date: Re: Re: How to use package without manually evaluating?
  • Next by Date: import FortranForm back
  • Previous by thread: Re: How to do a negative pattern?
  • Next by thread: Mathematica kernel color printing (Linux)