<p>在尝试减少嵌套的ifs(以及一个停止工作的脚本)时遇到了很多麻烦之后,我意识到也许我对python中布尔值的工作原理和工作原理有错误的认识。在</p>
<p>我有这个(工作正常,但扭曲):</p>
<pre><code>if (not gotside):
if (j > 1):
if (j < a.shape[1] - 1):
if a[i, j+unit]:
print "only now I do stuff!"
</code></pre>
<p>并尝试了这个方法(因为没有按预期工作而显得很拘束):</p>
^{pr2}$
<p>然后我试着用“or”代替“and”,但是没用,因为(后来我发现)当你使用<code>x and y</code>甚至<code>x or y</code>时,你得到的是{<cd3>},而不是{<cd4>}。在</p>
<p>所以,我不知道如何才能一个接一个地进行一些测试(最好是在同一行中,使用布尔运算符),这样当第一个测试的结果为False时,整个表达式就会返回<code>False</code>。在</p>
<p>谢谢你的阅读!在</p>
<p>你的例子应该有用。在</p>
<pre><code>if x and y and z:
...
</code></pre>
<p>只有当x、y和z的求值结果都不为<code>False</code>,并且在Python中,<code>and</code>短路时才会发生,因此一旦一个项目失败,就会返回<code>False</code>值。我们可以很容易地展示这一点:</p>
^{pr2}$