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

AltStyle によって変換されたページ (->オリジナル) /