これはおそらく愚かな質問ですが、the mapping of operators to functionsを見ると、not in
演算子を表す関数がないことに気付きました。最初は私がこれはおそらく解釈者がこれをnot x in y
に並べ替えるためだと考えましたが、not in
とまったく同じように動作するように思われるis not
の機能があります。私は何かを逃しているのですか?そのオペレータは本当に存在しませんか?ここでpython演算子、 "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)
私はこのために私自身の関数を書くことができますが、オペレータモジュールが出て、このコードをプッシュすることができ、一方、その後、あなたは効率の価格を支払いますしたがって、より速く実行されます。
実際、「a is not b」は単に「not a is b」と並べ替えられませんでしたか? – JAB
'not in'のチェックが 'in'のチェックよりも速く実行できる状況がありますか? –
@PaulMantaは疑いがあります。なぜなら、 'not in'は定義上の網羅的な検索であるからです。 –