2017-02-20 8 views
0

in演算子はPythonでどのように動作しますか?Pythonでは 'in'演算子はどのように機能しますか?

以下の例では、異なるオブジェクトである2つの名前付きタプルがありますが、in演算子はオブジェクトの1つを含む配列に対してTrueと評価されます。

inアレイにオブジェクトが含まれているかどうかを確認するか、アレイ内のオブジェクトが同等かどうかを確認しますか?私はドキュメントを検索しようとしましたが、具体的なものは見つけられませんでした。

In [3]: a = namedtuple('test', ['t'])        

In [6]: b = a(1)      

In [7]: c = a(1)      

In [8]: b is c       
Out[8]: False       

In [9]: id(b)       
Out[9]: 54740808      

In [10]: id(c)       
Out[10]: 88817352      

In [11]: c in [b]      
Out[11]: True       

In [12]: b in [c]      
Out[12]: True       

In [13]: c == b      
Out[13]: True   
+1

__() '演算子の右側のオブジェクトのメソッド。それが 'list'の場合は' __eq __() 'メソッドを呼び出します(これはカスタム' __eq __() 'メソッドを持つクラスを実装することで明らかになります)、' set'または 'dict_keys'でハッシュを比較します私は推測するが、わからない。また、 '__eq __()'メソッドを持たない要素がある場合、 'in'は' NotImplemented'を返さず、それらは静かにスキップされます。 – deeenes

答えて

0

in演算子は、値が等しいオブジェクトを含む配列をチェックしています。ここ は例である:in`が `__containsによって定義されないもの`

In [1]: a = {} 

In [2]: b = {} 

In [3]: c = [a] 

In [4]: id(a), id(b), id(c[0]) 
Out[4]: (4514911128, 4515638640, 4514911128) 

In [5]: a in c 
Out[5]: True 

In [6]: b in c 
Out[6]: True 
関連する問題