Python未更新的全局变量列表

时间:2017-06-21 08:06:38

标签: python arraylist global-variables

我的全局变量很少,而且我有一个列表。在函数中,我使用列表并更新如下的值,但全局变量似乎没有更新。

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

现在,当我希望更新未发生的全局变量时,我仍然会看到旧的变量,有人可以解释如何从列表中更新全局变量。

3 个答案:

答案 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 !!