Re: Cases
- To: mathgroup at smc.vnet.net
- Subject: [mg50442] Re: [mg50423] Cases
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sat, 4 Sep 2004 01:43:18 -0400 (EDT)
- References: <200409030735.DAA15539@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
*This message was transferred with a trial version of CommuniGate(tm) Pro*
On 3 Sep 2004, at 16:35, Blimbaum, Jerry AA R22 wrote:
> *This message was transferred with a trial version of CommuniGate(tm)
> Pro*
>
> Given: x = {a,b,c,d,d};
>
> Applying Cases[x,d] gives an output of {a,b,c}......
>
> However, Cases[x,Not[d]] gives as output an empty list { }... I
> expected {a,b,c}.....
>
> Why didnt I get that?
>
> This issue came up when using Thread on vectors...and in some cases the
> Thread resulted in 0 == 0 so it's output in the list was
> True....and I
> wanted to remove them....
>
> thanks.....jerry blimbaum
>
>
This is because Not[d] is not a pattern matched by something that is
not d. There are several ways to construct what is effectively such a
pattern, e.g.
Cases[x,_?(#=!=d&)]
{a,b,c}
Cases[x,_?(Not[MatchQ[#,d]]&)]
{a,b,c}
but I don't think there is any way that does not use PatternTest. That
means that this is a situation you can make your program simpler if
you use Select, e.g.
Select[x,#=!=d&]
{a,b,c}
Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/
- References:
- Cases
- From: "Blimbaum, Jerry AA R22" <jerry.blimbaum@navy.mil>
- Cases