This is a possibly silly question, but looking at the mapping of operators to functions I noticed that there is no function to express the not in
operator. At first I thought this was probably because the interpreter just reorders this to be not x in y
, but there is a function for is not
which seems like it should behave exactly the same as not in
. Am I missing something, or does that operator really not exist?
Here's a really stupid example where you might want this:
def compare_iter(a,b,func):
return [func(aa,bb) for aa,bb in zip(a,b)]
my_compare=compare_iter(xx,yy,lambda x,y:x not in y) #lambda -- yuck
my_compare=map(operator.not_,compare_iter(xx,yy,operator.contains) #extra map? grr...
#it would be nice to do: my_compare=compare_iter(xx,yy,operator.not_contains)
Of course I could write my own function for this, but then you pay a price in efficiency whereas the operator module could push this code out of python and therefore execute faster.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…