[Date Index]
[Thread Index]
[Author Index]
Re: Replace, test question
*To*: mathgroup at smc.vnet.net
*Subject*: [mg120351] Re: Replace, test question
*From*: Heike Gramberg <heike.gramberg at gmail.com>
*Date*: Tue, 19 Jul 2011 07:00:02 -0400 (EDT)
*References*: <201107181013.GAA26882@smc.vnet.net>
With a pattern /; test construct you get a positive match if test itself =
evaluates to True, not test[pattern], so in this
case you would want test to be PrimeQ[x], not PrimeQ, e.g.
{58, 61, 15, 66, 10, 2, 24, 81, 45, 84} /. x_ /; PrimeQ[x] -> P
You could also have used a PatternTest which is of the form =
pattern?test, where you get a positive match if test[pattern] is
True, so in this case
{58, 61, 15, 66, 10, 2, 24, 81, 45, 84} /. x_?PrimeQ -> P
would give the same result as above.
Heike
On 18 Jul 2011, at 11:13, PA32R wrote:
> I'm very new to Mathematica and trying to work my way through it. I
> don't understand why:
> {58, 61, 15, 66, 10, 2, 24, 81, 45, 84} /. x_ /; PrimeQ -> P
> returns:
> {58, 61, 15, 66, 10, 2, 24, 81, 45, 84}
>
> I would expect it to take the list, replace everything in the list
> that matches any pattern and passes the PrimeQ test, i.e., is prime,
> with P to yield:
> {58, P, 15, 66, 10, P, 14, 81, 45, 84}
>
> Can someone explain my misunderstanding?
>
> Thanks.
>
Prev by Date:
**Re: Replace, test question**
Next by Date:
**Re: I think Omitting the multiplication sign is a big mistake**
Previous by thread:
**Re: Replace, test question**
Next by thread:
**Re: Replace, test question**
| |