MathGroup Archive 2013

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

Search the Archive

Cases or Select?

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@
    Select[s, Exponent[#, x] >= 1 && Exponent[#, y] <= 1 &], {100}]]

(*roughly 75*)

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

(* roughly 73*)

(*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.


On Aug 2, 13, at 2:50 AM, danl at 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