在 for 循环中更新变量不起作用

Updating a variable inside the for loop is not working

在下面的代码中,我试图将 rsum 值更新为 (rsum - lsum - nums[i]) inside for循环,它给了我错误的输出。但是,如果我声明一个新的变量名称并为其分配 (rsum - lsum - nums[i]) 值,它会给我正确的输出。这背后的原因是什么?

  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):
            rsum = rsum - lsum - nums[i]
            if lsum == rsum:
                return i
    
            lsum += nums[i]
    
        return -1
    
  2. 给我正确输出的代码

    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]。

不知道我说的够不够清楚,如果不够,请告诉我。