擅长:python、mysql、java
<p>我认为乔兰·比斯利的答案最适合你目前的知识水平,但值得一看的是一种更为Python式的、更高阶的解决问题的方法:</p>
<pre><code>def even2d(list2d):
return all(sum(row) % 2 == 0 for row in list2d)
</code></pre>
<p>你可能不会马上明白,但我想我可以解释。在</p>
<p>首先,<code>all</code>函数只返回<code>True</code>,如果序列中的每个值都为真。这是一个非常明显的优点,它避免了“向后思考”的需要(“除非一行是奇数,否则所有行都是偶数的”)。关键是,中间的表达式是什么样的序列?在</p>
<p>首先,如何获得行和序列?在</p>
^{pr2}$
<p>Python允许您在列表理解中缩写此模式:</p>
<pre><code>row_sums = [sum(row) for row in list2d]
</code></pre>
<p>当然,这个表达式<code>sum(row)</code>可以是更复杂的,比如<code>sum(row) % 2 == 0</code>:</p>
<pre><code>row_evens = [sum(row) % 2 == 0 for row in list2d]
</code></pre>
<p>所以:</p>
<pre><code>def even2d(list2d):
row_evens = [sum(row) % 2 == 0 for row in list2d]
return all(row_evens)
</code></pre>
<p>你甚至可以用一个表达式来计算,但现在你还不能用这个表达式来计算。你要做的就是把方括号变成括号:</p>
<pre><code>def even2d(list2d):
row_evens = (sum(row) % 2 == 0 for row in list2d)
return all(row_evens)
</code></pre>