get rid of duplicate elements in list without set
Aaron Brady
castironpi at gmail.com
Fri Mar 20 20:12:51 EDT 2009
On Mar 20, 5:07 pm, Michael Spencer <m... at telcopartners.com> wrote:
> Alexzive wrote:
snip
> And, if you really want, you can get the body of this into 1-line, noting that
> seen.add returns None, so the expression (item in seen or seen.add(item))
> evaluates to True if item is in seen, or None (and item is added to seen) if not.
>
> >>> seen = set()
> >>> B= [item for item in A if not (item in seen or seen.add(item))]
> >>> B
> [1, 2, 3, 4]
IYO in your opinion, is '... or seen.add(item) is None' more or less
readable?
You might even want '... or ( lambda x: False )( seen.add( item ) )'.
Or: '... or seen.add(item) and False'.
This preserves order.
More information about the Python-list
mailing list