List representation using element position
- To: mathgroup at smc.vnet.net
- Subject: [mg72506] List representation using element position
- From: "Dr. Wolfgang Hintze" <weh at snafu.de>
- Date: Wed, 3 Jan 2007 01:39:12 -0500 (EST)
- Organization: privat
Hello group, happy new year to all of you! This one was put up in a slightly different form by me in March 2006. It is now more general and it is lossless with respect to information: Given a list of integers which may repeat, e.g. lstIn = {2,3,4,4,2,1,1,5,4} provide a list of the different values and their respective positions in the original list. In the example, LstOut= { {1,{6,7}}, {2,{2,5}}, {3,{2}}, {4,{3,4,9}}, {5,{8}} } Who finds the shortest function doing this task in general? My solution appears 15 lines below Thanks. Best regards, Wolfgang 1 5 10 fPos[lstIn_] := Module[{f = Flatten /@ (Position[lstIn, #1] & ) /@ Union[lstIn]}, ({#1, f[[#1]]} & ) /@ Range[Length[f]]] In[15]:= fPos[lstIn] Out[15]= {{1, {6, 7}}, {2, {1, 5}}, {3, {2}}, {4, {3, 4, 9}}, {5, {8}}}
- Follow-Ups:
- Re: List representation using element position
- From: János <janos.lobb@yale.edu>
- Re: List representation using element position
- From: Adriano Pascoletti <pascolet@dimi.uniud.it>
- Re: List representation using element position