MathGroup Archive 2013

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

Search the Archive

Cases or Select?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg131492] Cases or Select?
  • From: W Craig Carter <ccarter at MIT.EDU>
  • Date: Thu, 8 Aug 2013 00:07:02 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <ktaj20$llc$1@smc.vnet.net> <ktcnaf$r2b$1@smc.vnet.net> <20130802065025.0EF4969D7@smc.vnet.net>

Hello Danny,
I have the same subjective opinion, Select seems more natural than Cases in this case.
I can never remember which of the two goes with patterns and which with functions in any case--I think I've looked up the syntax on these functions more than any others.

So, I decided to run a little test:

s = List @@ Expand[5 (x + y)^100000];

ts = First@
  Timing[Do[
    Select[s, Exponent[#, x] >= 1 && Exponent[#, y] <= 1 &], {100}]]

(*roughly 75*)

tc = First@
  Timing[Do[
    Cases[s,
     aa_ /; Exponent[aa, x] >= a && Exponent[aa, y] <= a], {100}]]

(* roughly 73*)

tc/ts
 
(*roughly 1.03*)

I had guessed that the function call would have been faster... but I guessed wrong.  I don't believe there is any caching of results here, so it seems a fair comparison.

I suppose that if the function in Select had only numeric arguments, then using Compile might make Select a better choice.


Craig



On Aug 2, 13, at 2:50 AM, danl at wolfram.com wrote:

> In[20]:= a = 1;
>
> In[21]:= Select[s, Exponent[#, x] >= a && Exponent[#, y] <= a &]
>
> Out[21]= {5 x^3, 15 x^2 y}
>
> Obviously this can also be done with Cases, but that seems a bit more awkward to me.
>
> In[22]:= Cases[s, aa_ /; Exponent[aa, x] >= a && Exponent[aa, y] <= a]
>
> Out[22]= {5 x^3, 15 x^2 y}
>
> Since "natural" and "awkward" are in the mind of the beholder, one might well hold an opinion the reverse of my own.




  • Prev by Date: Re: Mathematica does not recognize C Compiler
  • Next by Date: ListVectorPlot[ ] absolute, definite vector length
  • Previous by thread: Re: Pattern with powers
  • Next by thread: Re: Fitting a Complicated Function