加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-operator.ge的行为不一致

发布时间:2020-12-17 17:37:50 所属栏目:Python 来源:网络整理
导读:from operator import geimport numpy as np ge([0,2,3],0.8)True ge([0,np.float64(0.8))array([False,True,True]) 对行为差异有何解释? 后来发现: ge([0,np.float(0.8))True 也:) 最佳答案 显然,Python和Numpy处理算术运算的方式之间存在差异. ge(a,b)与

from operator import ge
import numpy as np

>>> ge([0,2,3],0.8)
True
>>> ge([0,np.float64(0.8))
array([False,True,True])

对行为差异有何解释?

后来发现:

>>> ge([0,np.float(0.8))
True

也:)

最佳答案
显然,Python和Numpy处理算术运算的方式之间存在差异. ge(a,b)与a> = b相同.如果一个操作数是一个Numpy对象,则将调用相应的方法,如果另一个操作数是一个数组,它将以元素方式进行比较.也就是说,如果执行以下操作,您将获得相同的结果:

In [3]: [0,3] >= np.float64(0.8)
Out[3]: array([False,True])

另一方面,Python在2和3版本中处理情况的方式有所不同.您大概正在使用Python-2.X,它具有相关的逻辑(几乎是逻辑上的笑),但是在python 3中,您不能比较不同类型的对象,除非为其中一个对象显式实现了相应的操作.对于除不同数值类型以外的内置对象,不同类型的对象永远不会比较相等.

In [4]:  ge([0,0.8)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-405eded6881c> in <module>()
----> 1 ge([0,0.8)

TypeError: '>=' not supported between instances of 'list' and 'float'

阅读https://docs.python.org/3/library/stdtypes.html#comparisons了解更多详细信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读