Skip to main content

list manipulation - 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.



Answer




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]

Comments