Re: Position function

• To: mathgroup at smc.vnet.net
• Subject: [mg55587] Re: Position function
• From: Curt Fischer <tentrillion at gmail.NOSPAM.com>
• Date: Wed, 30 Mar 2005 03:21:50 -0500 (EST)
• References: <d2b4q9\$77c\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```konstantpi at mail15.com wrote:
> suppose i have a List:
> a={{1,3,1,2,1},{5,6,1,1,3,1}}
> how i could know the positions of "1" in every sublist , i could use Position[a
> [[1]],1] and Position[a[[2]],1]
> but i want a one formula to give me {{1,3,5},{3,4,6}}

In[1]:=
a = {{1, 2, 1, 2, 1}, {5, 6, 1, 1, 3, 1}}
Out[1]=
{{1, 2, 1, 2, 1}, {5, 6, 1, 1, 3, 1}}

In[7]:=
Flatten@Position[#,1]&/@a
Out[7]=
{{1, 3, 5}, {3, 4, 6}}

This method creates a pure function Position[#,1] which takes any list
and gives the position of the 1s.  The /@ operator maps this function
onto a, but only at the first level of the list.  The Flatten is there
to give you the desired output instead of {{{1},{3},{5} ...

There are two ways I can think of for your second question.

In[8]:=
Flatten[%]
Out[8]=
{1, 3, 5, 3, 4, 6}

The first is to just flatten the output from above.

In[10]:=
#[[2]] &  /@ Position[a, 1]
Out[10]=
{1, 3, 5, 3, 4, 6}

The second is to create a pure function #[[2]]& which takes the second
part of its argument, and to map this function onto the full position
list which is created by Position[a, 1].

--
curt fischer

>
> the second question:
> using Position[a,1] will give:
> {{1, 1}, {1, 3}, {1, 5}, {2, 3}, {2, 4}, {2, 6}}
> in general how to extract only the second item from every sublist so the output
> will be;
> {1,3,5,3,4,6}
> thanks
> konst.
>

```

• Prev by Date: Re: front end complaint (ui design flaw?)
• Next by Date: Re: symbolic quaternionic analysis
• Previous by thread: Re: Position function
• Next by thread: Re: Position function