A and B but not C in list
Terry Reedy
tjreedy at udel.edu
Sun Jan 23 19:35:13 EST 2011
On 1/23/2011 4:05 PM, CM wrote:
> In Python, is there a recommended way to write conditionals of the
> form:
>
> "if A and B but not C or D in my list, do something." ?
>
> I may also have variations on this, like "if A but not B, C, or D".
>
> Do I have to just write out all the if and elifs with all possible
> conditions, or is there a handier and more code-maintainable way to
> deal with this?
The straightforward code
if a in L and b in L and c not in L and d not in L
scans the list 4 times. One scan be be done generically as follows:
def req_pro(iterable, required = set(), prohibited = set()):
for item in iterable:
if item in prohibited:
return False
elif item in required:
required.remove(item)
else:
return not required # should now be empty
if req_pro(my_list, {A,B}, {C,D}): ...
# untested, of course..
--
Terry Jan Reedy
More information about the Python-list
mailing list