这可能是一个愚蠢的问题,但是在查看运算符到函数的映射时,我注意到没有函数可以表达not in
运算符。起初我认为这可能是因为解释器只是将它重新排序为not x in y
,但是有一个函数is not
似乎应该与not in
. 我错过了什么,还是那个运营商真的不存在?
这是一个非常愚蠢的例子,你可能想要这个:
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)
当然,我可以为此编写自己的函数,但是您会为效率付出代价,而操作员模块可以将此代码从 python 中推出,因此执行得更快。