Python 全局变量列表未更新



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

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
现在,当我期望更新全局变量时

,这并没有发生,我仍然看到旧变量,有人可以解释如何从列表中更新全局变量。

数据中的循环会更改数据的值,这不会更改其他变量。

当你运行 values[0] = values[1] 时,这意味着 values[0] 重新指向另一个对象,但a将保持不变。

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

您打算将数据中的值更改为 for 循环?

没有发生的原因是您正在更改value,而不是实际数据。

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'](


如果你想做这样的事情,你错了,编辑你插入到列表中的变量。

值[0] = 值[1]

设置在值的位置 0 ->值[1]。但是没有修改a-b-c!!

相关内容

  • 没有找到相关文章

最新更新