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
--
http://mail.python.org/mailman/listinfo/python-list