A and B but not C in list
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Sun Jan 23 18:21:31 EST 2011
On Sun, 23 Jan 2011 22:34:33 +0100, Christian Heimes wrote:
> It's easier and faster if you convert the lists to sets first:
>
> your_set = set(your_list)
>
> if your_set.issuperset(set([A, B])) and your_set.isdisjoint(set([C,
> D])):
> ...
"Easier" is a close thing. I find this easier to remember and write than
set processing, even if it is a couple of characters longer:
if all(x in your_list for x in (A, B)) and not any(x in your_list for x
in (C, D)):
...
And as for "faster", surely that will depend on the number of elements in
your_list? The conversion from list to set doesn't happen for free, and
it's likely that for small enough lists, that time may exceed any time
savings you would otherwise gain.
--
Steven
More information about the Python-list
mailing list