"Collapsing" a list into a list of changes

Tony aclarke11 at yahoo.co.uk
Sat Feb 5 07:36:12 EST 2005


Alan McIntyre wrote:
> 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

Here is a version using dictionary properties, ie no duplication of
keys.

def condense(l):
 d={}
 for item in l:
    d[item]=1
 l=d.keys()
 return l

Cheers
Tony




More information about the Python-list mailing list