擅长:python、mysql、java
<p>这是由于范围界定而发生的。在第一个函数中,使用以下代码<code>nums = list(dq)</code>将<code>deque</code>的值赋值给<code>nums</code>。这告诉python这个<code>nums</code>是函数<code>rotateNums</code>的局部变量。因此,它在外部<code>nums</code>没有影响。相反,如果您这样做:</p>
<pre><code>def rotateNums(nums, k):
dq = deque(nums)
for _ in range(0,k):
num = dq.pop()
dq.appendleft(num)
nums = list(dq)
nums[:] = list(dq)
return nums
nums = [1,2,3,4,5,6,7]
k = 3
print(f'nums before rotation: {nums}')
nums = rotateNums(nums, k)
print(f'nums after rotation: {nums}')
</code></pre>
<p>输出将是:</p>
<pre><code>nums before rotation: [1, 2, 3, 4, 5, 6, 7]
nums after rotation: [5, 6, 7, 1, 2, 3, 4]
</code></pre>
<p>而在第二种方法中,通过调用<code>nums[:] =</code>,您正在<strong>访问</strong>并修改<code>nums</code>的元素,这是允许的,并且不会创建局部变量<code>nums</code></p>