"Collapsing" a list into a list of changes

Alan McIntyre alan.mcintyre at esrgtech.com
Fri Feb 4 12:43:37 EST 2005


Hi all,

I have a list of items that has contiguous repetitions of values, but 
the number and location of the repetitions is not important, so I just 
need to strip them out.  For example, if my original list is 
[0,0,1,1,1,2,2,3,3,3,2,2,2,4,4,4,5], I want to end up with [0,1,2,3,2,4,5].

Here is the way I'm doing this now:

def straightforward_collapse(myList):
     collapsed = [myList[0]]
     for n in myList[1:]:
         if n != collapsed[-1]:
             collapsed.append(n)

     return collapsed

Is there an elegant way to do this, or should I just stick with the code 
above?

Thanks,
Alan McIntyre
http://www.esrgtech.com



More information about the Python-list mailing list