[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