Re: Cases to Select ?
- To: mathgroup at smc.vnet.net
- Subject: [mg73962] Re: [mg73920] Cases to Select ?
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sat, 3 Mar 2007 03:56:06 -0500 (EST)
- References: <200703030602.BAA02963@smc.vnet.net>
On 3 Mar 2007, at 07:02, 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}}
>
> To retrieve those sublists containing 3 and 4, I'm
> using
>
> A34C=Cases[A, {___, 4, ___, 3, ___} | {___, 3, ___,
> 4, ___}].
>
> My first query is whether there is a (neater ?) way
> to combine the 2 patterns, possibly using MemberQ as
> in
>
> A34S=Select[A, MemberQ[#, 3] && MemberQ[#, 4] &] .
I am not sure why this is neater, but can certianly do the same thing
with Cases:
Cases[A,_?(MemberQ[#,3]&&MemberQ[#,4]&)]
{{4,3,8},{3,7,4},{4,6,0,3},{-3,4,3,8,1}}
>
>
> 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.
>
> Finally, how could I do it using Cases
>
> NotA34C= Cases[A, pattern??] ?
The simplest way is to use DeleteCases:
DeleteCases[A, _?(MemberQ[#, 3] && MemberQ[#, 4] &)]
Andrzej Kozlowski
- References:
- Cases to Select ?
- From: Mr Ajit Sen <senra99@yahoo.co.uk>
- Cases to Select ?