programming DeleteRepetitions
- To: mathgroup at smc.vnet.net
- Subject: [mg23662] programming DeleteRepetitions
- From: Preston Nichols <pnichols at wittenberg.edu>
- Date: Sun, 28 May 2000 23:09:11 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Dear Mathematica Wizards:
Below I give a function which removes duplicates from a list (as Union
does), but without sorting the result (as Union also does). More
specifically, it extracts, in order, the first instance of each distinct
element of the list.
Is there any simpler way to do this? It's a simple idea, but I seem to
need seven different list-manipulation functions, including 3 uses of Map!
DeleteRepetitions[X_] :=
Take[X, #] & /@
Sort[First /@
(Position[X, #] & /@
Union[X])] // Flatten
For example,
In[2] := DeleteRepetitions[{3,1,2,3,3,2,4,1}]
Out[2] = {3,1,2,4}
In[3] := DeleteRepetitions[{b,a,b,a,c,a}]
Out[3] = {b,a,c}
I don't need to use this function on lists longer that 20 or so elements,
so speed is not a critical concern.
Also, my version happens to work on expressions with heads other than List
(because Take, Position, Union, and Flatten all do so), but I don't really
need that feature.
How would you implement this function?
Preston Nichols
Mathematics and Computer Science
Wittenberg University