for循环中的Python变量范围

kyl*_*yth 1 python variables scope for-loop

这是一个非常简单的问题,但我不知道为什么python会这样做.对于下面的循环,if head != None...正在创建一个局部变量,以便head += 1不修改头部for head in myHeap.array.在头+ + 1之后添加一个打印(头)产生我想要的结果,但if语句之外的头保持不变.

    for head in myHeap.array:
        if head != None and count % int(grow) == 0:
            head += 1
Run Code Online (Sandbox Code Playgroud)

所以当预期[3,3,3,2]时,输入myHeap.array = [2,2,2,1]在迭代结束时输出相同的列表.我还验证了if语句满足条件,解释器使用该head += 1

Hol*_*rel 5

您需要访问myHeap.array列表的元素才能修改它们.像这样的东西:

class myHeap(object):
    pass

myHeap.array = [2, 2, 2, 1]

for n, head in enumerate(myHeap.array):
    if head != None:
        myHeap.array[n] = head + 1

print myHeap.array
Run Code Online (Sandbox Code Playgroud)

输出:

[3, 3, 3, 2]
Run Code Online (Sandbox Code Playgroud)