擅长:python、mysql、java
<p>让我们重复任务语句:“获取矩阵的每行</em>和每列<em>的最小值”。在</p>
<p>如果每一行都有一个最小值。听起来很有趣,不是吗?所以,代码如下:</p>
<pre><code>result1 = [<something> for row in matrix]
</code></pre>
<p>好吧,你每排要做什么?对,找到最小值,这非常简单:</p>
^{pr2}$
<p>作为<code>result</code>,您将得到一个<code>n</code>值的列表,正如预期的那样。在</p>
<hr/>
<p>等等,现在我们只找到了每一行的最小值,而不是每个<em>列</em>的最小值,所以我们也这样做吧!在</p>
<p>考虑到您使用的是python3.x,您可以做一些非常棒的事情。例如,您可以轻松地在列上循环:</p>
<pre><code>result2 = [min(column) for column in zip(*matrix)] # notice the asterisk!
</code></pre>
<p><code>zip(*matrix)</code>中的星号使<code>matrix</code>的每一行都成为<code>zip</code>的独立参数,如下所示:</p>
<pre><code>zip(matrix[0], matrix[1], matrix[2], matrix[3])
</code></pre>
<p>这看起来不太可读,而且取决于<code>matrix</code>中的行数(基本上,您必须对它们进行硬编码),星号可以让您编写更简洁的代码。在</p>
<p><code>zip</code>返回元组,第<code>i</code>个元组包含所有行的第<code>i</code>个值,因此这些元组实际上是给定矩阵的列。在</p>
<hr/>
<p>现在,您可能会发现这段代码有点难看,您可能希望以更简洁的方式编写相同的代码。当然,您可以使用一些函数式编程魔术:</p>
<pre><code>result1 = list(map(min, matrix))
result2 = list(map(min, zip(*matrix)))
</code></pre>
<p>这两种方法完全相同。在</p>