# How can I select elements that are true

I have a list of lists. For example,

 list = {{0,1,0,1,true},{0,0,0,0,false},{0,1,1,1,true},{1,1,1,1,false},{2,2,2,2,false}}


I'd like to find all lists that have the fifth element set to true. I'm looking for a general method that works for any lists in this format. How can I do this?

In the above example, the result that I'm looking for would be:

 {{0,1,0,1,true},{0,1,1,1,true}}


Sorry for such a basic question. I looked through the documentation for lists, and couldn't find a way to do this. I'm still fairly new at Mathematica.

-
Have you tried Cases or Select? true is a proper symbol, but be aware that Mathematica represents truth values with True and False (not true) – Szabolcs Mar 25 '14 at 15:34
Cases[{{0, 1, 0, 1, true}, {0, 0, 0, 0, false}, {0, 1, 1, 1, true}, {1, 1, 1, 1, false}, {2, 2, 2, 2, false}}, {___, true, ___}], see also DeleteCases e.g. in this answer – Artes Mar 25 '14 at 15:41

There are several options and this is probably a duplicate although I can't seem to find it. A few of them to try out and learn:

list = {{0, 1, 0, 1, true}, {0, 0, 0, 0, false}, {0, 1, 1, 1, true},
{1, 1, 1, 1, false}, {2, 2, 2, 2, false}};

Cases[list, {__, true}]
Select[list, Last@# === true &]
DeleteCases[list, {__, false}]
Pick[list, list, {__, true}] /. {} -> Sequence[]


all of which return

(* {{0, 1, 0, 1, true}, {0, 1, 1, 1, true}} *)


If your data has True and False instead of true and false, then you can simplify the Select example to:

Select[list, Last]

-
Scan[ If[#[[-1]] === true, Sow[#]] &, list] // Reap – Kuba Mar 25 '14 at 16:21
Extract[list, Position[list, true][[;; , {1}]]] – Kuba Mar 25 '14 at 16:21
Pick[list, list[[All, 5]], true] – Kuba Mar 5 '15 at 14:07

as @Szabolcs pointed out, MMA is case sensitive and true is treated as a symbol and not as a variable, thus.

data = {{0, 1, 0, 1, true}, {0, 0, 0, 0, false}, {0, 1, 1, 1,
true}, {1, 1, 1, 1, false}, {2, 2, 2, 2, false}};
Select[data, MatchQ[#[[5]], true] &]
(*{{0, 1, 0, 1, true}, {0, 1, 1, 1, true}}*)


If the data is entered accordingly (with True and False) then

data = {{0, 1, 0, 1, True}, {0, 0, 0, 0, False}, {0, 1, 1, 1,
True}, {1, 1, 1, 1, False}, {2, 2, 2, 2, False}};
Select[data, TrueQ[#[[5]]] &]
(*{{0, 1, 0, 1, True}, {0, 1, 1, 1, True}}*)

-