更新时 python 中列表或数组的范围
scopes of list or arrays in python when renewed
在这段代码中,我发现当第 1 行是 运行(第 2 行被注释)时,tcheck2 函数可以更改列表 x 但是当它在第 2 行更新 x=[[] for _ in range(3+1)] #2
时什么也没有x 恰好在 tcheck1 函数,这是为什么?
def tcheck():
x=[11,54]
tcheck2(x)
print(x)
def tcheck2(x):
print(x)
x[0]+=1 #1
x=[[] for _ in range(3+1)] #2
来自您的代码:
def tcheck():
x=[11,54]
tcheck2(x)
q(x)
def tcheck2(x):
q(x)
x[0]+=1 #1
x=[[] for _ in range(3+1)] #2
# t+=3
q(t)
行 #1
只是增加了 x
的一个元素。但是,行 #2
将局部变量 x
替换为全新的 list
.
也许您的意思是:x[:] = [[] for _ in range(3+1)] #2
将更新 x
所指的 list
的全部内容。
在这段代码中,我发现当第 1 行是 运行(第 2 行被注释)时,tcheck2 函数可以更改列表 x 但是当它在第 2 行更新 x=[[] for _ in range(3+1)] #2
时什么也没有x 恰好在 tcheck1 函数,这是为什么?
def tcheck():
x=[11,54]
tcheck2(x)
print(x)
def tcheck2(x):
print(x)
x[0]+=1 #1
x=[[] for _ in range(3+1)] #2
来自您的代码:
def tcheck():
x=[11,54]
tcheck2(x)
q(x)
def tcheck2(x):
q(x)
x[0]+=1 #1
x=[[] for _ in range(3+1)] #2
# t+=3
q(t)
行 #1
只是增加了 x
的一个元素。但是,行 #2
将局部变量 x
替换为全新的 list
.
也许您的意思是:x[:] = [[] for _ in range(3+1)] #2
将更新 x
所指的 list
的全部内容。