加入收藏 | 设为首页 | 会员中心 | 我要投稿 河池站长网 (https://www.0778zz.com/)- 边缘计算、容器、中间件、基础存储、数据处理!
当前位置: 首页 > 编程开发 > Python > 正文

python – 与布尔numpy数组VS PEP8 E712的比较

发布时间:2021-03-31 03:45:31 所属栏目:Python 来源:互联网
导读:PEP8 E712要求“如果cond为True,则应与True进行比较:或者如果cond:”. 但如果我遵循这个PEP8,我会得到不同/错误的结果.为什么? In [1]: from pylab import *In [2]: a = array([True, True, False])In [3]: where(a == True)Out[3]: (array([0, 1]),)#

PEP8 E712要求“如果cond为True,则应与True进行比较:或者如果cond:”.

但如果我遵循这个PEP8,我会得到不同/错误的结果.为什么?

In [1]: from pylab import *

In [2]: a = array([True,True,False])

In [3]: where(a == True)
Out[3]: (array([0,1]),)
# correct results with PEP violation

In [4]: where(a is True)
Out[4]: (array([],dtype=int64),)
# wrong results without PEP violation

In [5]: where(a)
Out[5]: (array([0,)
# correct results without PEP violation,but not as clear as the first two imho. "Where what?"

解决方法

该建议仅适用于测试值的“真实性”的if语句. numpy是一个不同的野兽.
>>> a = np.array([True,False]) 
>>> a == True
array([ True,False],dtype=bool)
>>> a is True
False

注意a是True始终为False,因为a是一个数组,而不是布尔值,并且是一个简单的引用相等性测试(因此只有True是True;例如,None不是True).

(编辑:河池站长网)

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

    推荐文章
      热点阅读