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
,因为身份测试应该是对称的.这可能是一个设计工件.
归档时间: |
|
查看次数: |
5980 次 |
最近记录: |