Re: Problem with Position applied on 2D list?
- To: mathgroup at smc.vnet.net
- Subject: [mg72604] Re: Problem with Position applied on 2D list?
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 12 Jan 2007 05:01:33 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <eo4n23$l4i$1@smc.vnet.net>
Heiko Damerau wrote: > Dear All, > > There is some strange behaviour of the Position[] function I am > struggling with: > > integerRandomTable = Table[Table[Random[Integer, 10], {10}], {10}]; > > Find the position of all lists containing the value 5 (just a simple > example): > > Position[integerRandomTable, _?(MemberQ[#, 5] &)] > > gives the expected result, e.g. {{1}, {3}, {4}, {5}, {6}, {7}, {8}}. > However, just asking for all lists not containing the value 5 > > Position[integerRandomTable, _?(Not[MemberQ[#, 5]] &)] > > Doesn't give the expected result but some strange thing, e.g. {{0}, > {1,0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, ..., {10, 3}, {10, 4}, {10, 5}, > {10, 6}, {10, 7}, {10, 8}, {10, 9}, {10, 10}, {10}, {}} > > What is the explanation for the different behaviour of MemberQ[] > and Not[MemberQ[]]? > > Thanks a lot in advance for any help. > > Best regards, > Heiko Hi Heiko, You must set the third parameter of the function Position to one to get the desired result. (Otherwise, Position applies the test to the whole hierarchy of nested levels and to the leaves.) In[1]:= integerRandomTable = Table[Random[Integer, 10], {10}, {10}] Out[1]= {{1, 3, 0, 4, 7, 4, 4, 2, 5, 2}, {1, 9, 8, 4, 9, 8, 3, 10, 2, 9}, {8, 8, 8, 7, 5, 6, 3, 1, 8, 7}, {4, 3, 10, 5, 10, 6, 9, 3, 5, 1}, {3, 5, 6, 0, 5, 0, 8, 9, 8, 7}, {2, 2, 8, 7, 8, 0, 5, 2, 6, 0}, {6, 10, 9, 5, 1, 3, 9, 3, 0, 6}, {6, 2, 0, 4, 7, 9, 2, 6, 1, 7}, {9, 1, 2, 0, 3, 8, 4, 2, 3, 5}, {5, 7, 1, 10, 9, 6, 3, 8, 9, 5}} In[2]:= Position[integerRandomTable, _?(MemberQ[#1, 5] & ), 1] Position[integerRandomTable, _?( Not[MemberQ[#1, 5]] & ), 1] Out[2]= {{1}, {3}, {4}, {5}, {6}, {7}, {9}, {10}} Out[3]= {{0}, {2}, {8}} Regards, Jean-Marc