python运算符,没有"不在"的运算符

mgi*_*son 18 python indexing performance

这可能是一个愚蠢的问题,但是看看运算符到函数的映射,我注意到没有表达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)
Run Code Online (Sandbox Code Playgroud)

当然我可以为此编写自己的函数,但是你需要为效率付出代价,而运算符模块可以将这些代码从python中推出,因此执行速度更快.

Fré*_*idi 15

这里不需要另一个功能.not in是反之in,所以你有以下映射:

obj in seq => contains(seq, obj)

obj not in seq => not contains(seq, obj)
Run Code Online (Sandbox Code Playgroud)

你是对的,这与is/ 不一致is not,因为身份测试应该是对称的.这可能是一个设计工件.