finding items that occur more than once in a list

sturlamolden sturlamolden at yahoo.no
Tue Mar 18 17:56:02 EDT 2008


On 18 Mar, 22:25, sturlamolden <sturlamol... at yahoo.no> wrote:

> def nonunique(lst):
>    slst = sorted(lst)
>    return list(set([s[0] for s in
>        filter(lambda t : t[0] != t[1], zip(slst[:-1],slst[1:]))]))

Obviously that should be 'lambda t : t[0] == t[1]'. Instead of using
the set function, there is more structure to exploit when the list is
sorted:


def nonunique(lst):
   slst = sorted(lst)
   dups = [s[0] for s in
        filter(lambda t : t[0] == t[1], zip(slst[:-1],slst[1:]))]
   return [dups[0]] + [s[1] for s in
        filter(lambda t : t[0] != t[1], zip(dups[:-1],dups[1:]))]








More information about the Python-list mailing list