我的全局变量很少,而且我有一个列表。在函数中,我使用列表并更新如下的值,但全局变量似乎没有更新。
a = "hello"
b ="how"
c = "are you"
data = ([a,"abc","xyz"],[b,"pqr","mno"],[c,"test","quest"])
def checklist():
global data , a, b, c
for values in data:
values[0] = values[1]
checklist()
print a + ":" + b + ":"+ c
现在,当我希望更新未发生的全局变量时,我仍然会看到旧的变量,有人可以解释如何从列表中更新全局变量。
答案 0 :(得分:1)
数据循环会更改数据的值,但不会更改其他变量。
当你运行a
时,它意味着值[0]重新指向另一个对象,但In [52]: a = '12'
In [53]: li = [a, 'b', 'c']
In [54]: id(li[0])
Out[54]: 140264171560632
In [55]: id(a)
Out[55]: 140264171560632
In [56]: li[0] = 'a'
In [57]: li
Out[57]: ['a', 'b', 'c']
In [58]: a
Out[58]: '12'
In [60]: id(li[0])
Out[60]: 140264267728616
In [61]: id(a)
Out[61]: 140264171560632
将保持不变。
findformat
答案 1 :(得分:0)
您希望数据中的值在for循环中发生变化吗?
没有发生的原因是您正在更改value
,而不是实际数据。
答案 2 :(得分:0)
a,b,c = "hello", "how", "are you"
data = ([a,"abc","xyz"],[b,"pqr","mno"],[c,"test","quest"])
def checklist():
global data , a, b, c
for values in data:
values[0] = values[1]
checklist()
print a + ":" + b + ":"+ c
你好:怎么样:你是
print(data)
(['abc','abc','xyz'],['pqr','pqr','mno'],['test','test','quest'])
如果你想做这样的事情,那就错了,编辑你在列表中插入的变量。
values [0] = values [1]
设置值的位置0 - >值[1]。但是没有修改a-b-c !!