擅长:python、mysql、java
<p>使用两个for循环,我们必须每次重置<code>sub_answer</code>。这看起来很混乱,所以可能还有另一个选择;可以在下面找到:</p>
<pre><code>l = [1,2,3]
answer = []
for each in l:
sub_answer = []
for every in l:
sub_answer.append(each-every)
answer.append(sub_answer)
sub_answer = []
print(answer)
#[[0, -1, -2], [1, 0, -1], [2, 1, 0]]
</code></pre>
<hr/>
<p>移除用于列表理解的for循环。现在我们不需要<code>sub_answer</code>:</p>
^{pr2}$
<p><code>l</code>是可缩放的。我们迭代列表,然后将其附加到使用列表理解创建的新列表中,我们通过再次遍历列表来减去<code>each</code>变量。在</p>
<p>{cd6>如果我们变成{cd6}:</p>
<pre><code>[[0, -1, -2, -3, -4, -5, -6], [1, 0, -1, -2, -3, -4, -5], [2, 1, 0, -1, -2, -3, -4], [3, 2, 1, 0, -1, -2, -3], [4, 3, 2, 1, 0, -1, -2], [5, 4, 3, 2, 1, 0, -1], [6, 5, 4, 3, 2, 1, 0]]
</code></pre>
<p>作为注释<code>(3-1 is not -2... it's 2....)</code></p>
<hr/>
<p>我们用一个列表理解为什么不用两个?!?!?!:
如果不需要for循环而只想使用列表理解:</p>
<pre><code>l = [1,2,3]
print([[each-x for x in l] for each in l])
#[[0, -1, -2], [1, 0, -1], [2, 1, 0]]
</code></pre>
<p>给出了相同的结果,但我认为如果您正在学习或在团队中学习,for循环更具可读性。在</p>