Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: [mg6133] Re: [mg6120] selecting from lists
Replies: 0

 C. Frey Posts: 1 Registered: 12/7/04
[mg6133] Re: [mg6120] selecting from lists
Posted: Feb 23, 1997 12:14 AM

Hi!

I think there a some more MMA-like methods to solve
the problems you posted (getting those elements of a
list for which the corresponding element of another list
is True resp. getting the first element of a list
having a special property)

Take the following as an example

IN[1]:=v = {1,2,3,4,5};
b = {True,False,False,True,True};

Then by typing

IN[2]:=Cases[Transpose[{v,b}],{_,True}]
OUT[2]={{1, True}, {4, True}, {5, True}}

you get all the pairs from the matrix Transpose[{v,b}]
which match the pattern {_,True}. But in Cases you can also
specify a Rule which transforms these pairs
(because you actually want the numbers, not the pairs).

IN[3]:=Cases[Transpose[{v,b}],{val_,True}->val]
OUT[3]={1,4,5}

Now you also searched for the first element in a list
matching a condition or conditional pattern.
The following is a solution if you look for the first
number in the upper list v which is greater than 2 (e.g.) :

IN[4]:=Cases[v, val_/;val>2] //First
OUT[4]=3

It has to be mentioned that in all the above you could also
use Select instead of Cases together with boolean
But when it comes to rules, I think Cases is the better approach...

Clemens
(: Clemens.Frey@uni-bayreuth.de :)