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

python – 与布尔numpy数组VS PEP8 E712的比较,第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]),)# 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 violationIn [4]: where(a is True)Out[4]: (array([],dtype=int64),)# wrong results without PEP violationIn [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 == Truearray([ True,False],dtype=bool)>>> a is TrueFalse

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

总结

以上是内存溢出为你收集整理的python – 与布尔numpy数组VS PEP8 E712的比较全部内容,希望文章能够帮你解决python – 与布尔numpy数组VS PEP8 E712的比较所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存