# can we Map other than First and Last, but another specific sub-element?

Posted 10 years ago
7164 Views
|
4 Replies
|
5 Total Likes
|
 If we look at this code, I can Map First and Last, but I can't seem to find a way to Map to the middle term, or any other term. I have tried Extract and Select in differing guises but can't seem to find a way to do it.  b = Subsets[Range[2, 10], {3}];  c = First /@ b;  d = Last /@ b;  Print[b[[1 ;; 10]],"  ",c[[1 ;; 10]],"   ",d[[1 ;; 10]]];   {2, 3, 4}, {2, 3, 5}, {2, 3, 6}, {2, 3, 7}, {2, 3, 8},  {2, 3, 9}, {2, 3, 10}, {2, 4, 5}, {2, 4, 6}, {2, 4, 7} {2, 2, 2, 2, 2, 2, 2, 2, 2, 2}{4, 5, 6, 7, 8, 9, 10, 5, 6, 7}I would like to extract the middle terms too and extend it to extract any term.Paul.
4 Replies
Sort By:
Posted 10 years ago
 Thank you everyone for your quick replies, I had indeed used the method you sugged Chip on many occasion, It seems I had a momentary lapse of reason.  I was trying to mix the b[[All, 2]] in with the select and mapping method which obviously didnt work, there is also another less efficient way of doing it too, RotateRight also maps across lists so I could have used First /@ b then RotateRight /@ b and repeated the process.  Shenghui, I will take a look at those references for a refresher thank you.Paul.
Posted 10 years ago
 Once you get familiar with the following functions, you are the guru of list manipulation: Specify range: 1. Span: http://reference.wolfram.com/mathematica/ref/Span.html2. Take: http://reference.wolfram.com/mathematica/ref/Take.htmlSpecify a condition: 1.Cases:  http://reference.wolfram.com/mathematica/ref/Cases.html2. Select: http://reference.wolfram.com/mathematica/ref/Select.html3. Pick: http://reference.wolfram.com/mathematica/ref/Pick.html
Posted 10 years ago
 You can also use All instead of Map. b = Subsets[Range[2, 10], {3}];  In[1]:= b[[All, 1]] Out[1]= {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,  3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5,  5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8}  In[2]:= b[[All, 2]]Out[2]= {3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 7, 7, 7, 8, 8, 9, 8, 8, 9, 9}In[3]:= b[[All, 3]]Out[3]= {4, 5, 6, 7, 8, 9, 10, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 8, 9, 10, 9, 10, 10, 9, 10, 10, 10}Another (less efficient) way is to use Transpose. In[4]:= t = Transpose[b];  In[5]:= t[[1]] Out[5]= {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,  3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5,  5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8}  In[6]:= t[[2]]Out[6]= {3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 7, 7, 7, 8, 8, 9, 8, 8, 9, 9}In[7]:= t[[3]]Out[7]= {4, 5, 6, 7, 8, 9, 10, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 5, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 6, 7, 8, 9, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 7, 8, 9, 10, 8, 9, 10, 9, 10, 10, 8, 9, 10, 9, 10, 10, 9, 10, 10, 10}
Posted 10 years ago
 First and Last are special cases of Part, so one could map a function like Part[#, k]&