MathGroup Archive 2005

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

Search the Archive

Re: Re: Pick function

----- Original Message ----- 
From: "Andrzej Kozlowski" <akoz at>
To: mathgroup at
Subject: [mg62953] [mg62928] Re: [mg62906] Pick function

> On 8 Dec 2005, at 14:04, Zdenek Buk wrote:
>> Hi All,
>> I have found a strange behavior of the "Pick" function.
>> Testing data:
>> ------------
>> In[1]:=
>> l = {1, a -> b, x, c -> 1, d -> e + f, g + h}
>> Try to use the Pick function:
>> ----------------------------
>> In[4]:=
>> sel1=Pick[l,l,_->_]
>> Out[4]=
>> {a->b,c->1,d->e+f,0}
<snipped explanation>
> I am not completely sure whether this was entirely intended by the
> designer's of Pick and whether it would not be better if Pick had an
> option specifying the level at which the attempted matching should
> take place, but in any case, it shows that you have to use it carefully.
> Andrzej Kozlowski


The explanation from Andrzej is correct, and I agree the behavior of Pick 
can be somewhat confusing at times. The key to remember is that the full 
nested structure of the selector (2nd) argument is used.

Having a level specification in Pick is probably not a bad idea, although 
it's really intended for use with selectors that have the exact structure of 
the result you want. So you could do something like

Pick[l, MatchQ[#, _ -> _] & /@ l]

although that wouldn't be very efficient for this particular case.

Oyvind Tafjord
Wolfram Research 

  • Prev by Date: Re: Skewness problem
  • Next by Date: Re: Pick function
  • Previous by thread: Re: Pick function
  • Next by thread: Re: Pick function