擅长:python、mysql、java
<p><code>+=</code>就地更改列表:</p>
<pre><code>>>> def inplace(l):
... l += ['spam']
...
>>> def new_list(l):
... l = l + ['spam']
...
>>> a = ['foo']
>>> inplace(a)
>>> a
['foo', 'spam']
>>> a = ['foo']
>>> new_list(a)
>>> a
['foo']
</code></pre>
<p>每次执行以下操作时,原始代码都会传入一个<em>新列表</em>:</p>
<pre><code>self.helper(root.left,sum-root.val,res,temp+[root.left.val])
</code></pre>
<p>但是您修改的代码在所有递归调用中共享<code>temp</code>,并且每次都扩展它。这很重要,因为通过创建一个新的列表,您为左分支的递归调用提供了一个新的、独立于右分支的列表。通过使用<code>+=</code>扩展列表,您现在可以在处理左分支之后为右分支提供一个更大的列表。你知道吗</p>