[Python-ideas] Uniquify attribute for lists

Masklinn masklinn at masklinn.net
Fri Nov 16 14:49:12 CET 2012


On 2012-11-16, at 14:17 , Michael Foord wrote:

> On 16 November 2012 12:39, Paul Moore <p.f.moore at gmail.com> wrote:
> 
>> On 16 November 2012 12:28, Robrecht De Rouck <de.rouck.robrecht at gmail.com>wrote:
>> 
>>> Hello,
>>> 
>>> I just wanted to bring to your attention that an *attribute for removing
>>> duplicate elements* for lists would be a nice feature.
>>> 
>>> *def uniquify(lis):
>>>    seen = set()
>>>    seen_add = seen.add
>>>    return [ x for x in lis if x not in seen and not seen_add(x)]*
>>> *
>>> *
>>> The code is from this post<http://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-in-python-whilst-preserving-order>. Also
>>> check out this performance comparison<http://www.peterbe.com/plog/uniqifiers-benchmark> of
>>> uniquifying snippets.
>>> It would be useful to have a uniquify attribute for containers in
>>> general.
>>> 
>> 
>> 
>> list(set(ls))
>> 
> 
> This loses order. Both solutions suffer from the problem that they only
> work with hashable objects.

Though in both cases they also have the advantage that they work in
(roughly) O(n) where an eq-based uniquifier (such as Haskell's
nub/nubBy) works in O(n^2).


More information about the Python-ideas mailing list