在 for 循环中更新变量不起作用
Updating a variable inside the for loop is not working
在下面的代码中,我试图将 rsum 值更新为 (rsum - lsum - nums[i]) inside for循环,它给了我错误的输出。但是,如果我声明一个新的变量名称并为其分配 (rsum - lsum - nums[i]) 值,它会给我正确的输出。这背后的原因是什么?
给出错误输出的代码
def pivotIndex(nums: List[int]) -> int:
n = len(nums)
if n == 1: return 0
lsum = 0
rsum = sum(nums)
for i in range(n):
rsum = rsum - lsum - nums[i]
if lsum == rsum:
return i
lsum += nums[i]
return -1
给我正确输出的代码
def pivotIndex(nums: List[int]) -> int:
n = len(nums)
if n == 1: return 0
lsum = 0
rsum = sum(nums)
for i in range(n):
total = rsum - lsum - nums[i]
if lsum == total:
return i
lsum += nums[i]
return -1
在您得到错误输出的第 11 行,您正在更改每个 rsum 的值,因此当您这样做时 (rsum-lsum-num[i]),您将获得我们将从中删除的新 rsum 值lsum 和 num[i]。当您检查 lsum == rsum
时,它可能只有一次为真,但随着 rsum 的值发生变化,它可能不相等。
在您获得正确输入的代码中,rsum 将保持不变,即 sum(nums)
,您每次都将删除 lsum 和 nums[i]。
不知道我说的够不够清楚,如果不够,请告诉我。
在下面的代码中,我试图将 rsum 值更新为 (rsum - lsum - nums[i]) inside for循环,它给了我错误的输出。但是,如果我声明一个新的变量名称并为其分配 (rsum - lsum - nums[i]) 值,它会给我正确的输出。这背后的原因是什么?
给出错误输出的代码
def pivotIndex(nums: List[int]) -> int: n = len(nums) if n == 1: return 0 lsum = 0 rsum = sum(nums) for i in range(n): rsum = rsum - lsum - nums[i] if lsum == rsum: return i lsum += nums[i] return -1
给我正确输出的代码
def pivotIndex(nums: List[int]) -> int: n = len(nums) if n == 1: return 0 lsum = 0 rsum = sum(nums) for i in range(n): total = rsum - lsum - nums[i] if lsum == total: return i lsum += nums[i] return -1
在您得到错误输出的第 11 行,您正在更改每个 rsum 的值,因此当您这样做时 (rsum-lsum-num[i]),您将获得我们将从中删除的新 rsum 值lsum 和 num[i]。当您检查 lsum == rsum
时,它可能只有一次为真,但随着 rsum 的值发生变化,它可能不相等。
在您获得正确输入的代码中,rsum 将保持不变,即 sum(nums)
,您每次都将删除 lsum 和 nums[i]。
不知道我说的够不够清楚,如果不够,请告诉我。