statsモジュールのSciPyのソースでこのコード行に出くわしました:
return 1.0*(x==x)
これは他の何かを返し1.0
ますか?言い換えれば、xの値がx == x
成り立つようなものはありFalse
ますか?
statsモジュールのSciPyのソースでこのコード行に出くわしました:
return 1.0*(x==x)
これは他の何かを返し1.0
ますか?言い換えれば、xの値がx == x
成り立つようなものはありFalse
ますか?
IEEE 754標準によると、非数(NaN)は、比較対象に関係なく、常にfalseと比較する必要があります。
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> x=float("NaN")
>>> x==x
False
ユーザー定義型は、等式演算子をオーバーライドして、必要なことをすべて実行できます。
Python 3.2.2 (default, Feb 10 2012, 09:23:17)
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... def __eq__(self, other):
... return False
...
>>> x=A()
>>> x==x
False
これはxの値に依存します。私はソースを見ていませんが、あなたがこのようなことをしたとしましょう:
class A:
def __eq__(self,other):
return bool(random.getrandbits(1))
x = A()
現在x == x
はfalseを返す場合があります。