Re: Conditional list indexing
- To: mathgroup at smc.vnet.net
- Subject: [mg95898] Re: Conditional list indexing
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Thu, 29 Jan 2009 05:56:54 -0500 (EST)
- References: <glpgd4$lha$1@smc.vnet.net>
daniele wrote: > Hello everybody, > I'd like to know how I can get the indices of the elements in a list > that satisfy a certain condition. Here's an example: suppose I have > the list > > a = Table[Prime[i],{i,10}]; > > that contains {2,3,5,7,11,13,17,19,23,29}. > > If I execute the command > > b = Select[a,#>15&]; > > b will contain {17,19,23,29}. I'd like to find a way to obtain a third > list, say c, that will contain {7,8,9,10}, i.e. the indices of the > elements in list a that are greater than 15. > > Thank you, > Daniele > > How about this: In[1]:= ll = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29} Out[1]= {2, 3, 5, 7, 11, 13, 17, 19, 23, 29} In[2]:= xx = Select[MapIndexed[{#1, #2[[1]]} &, ll], #[[1]] > 15 &] Out[2]= {{17, 7}, {19, 8}, {23, 9}, {29, 10}} In[3]:= xx[[All, 2]] Out[3]= {7, 8, 9, 10} I am sure there are many alternative ways! David Bailey http://www.dbaileyconsultancy.co.uk