在 Python 中更改多个变量

问题描述 投票:0回答:1

假设我有三组变量 a1、a2、a3、b1、b2、b3、c1、c2、c3,我想使用循环而不是单独赋值来更改每组中的第一个变量。
将每个组放入列表中是行不通的:

a1, a2, a3 = 1, 2, 3
b1, b2, b3 = 4, 5, 6
c1, c2, c3 = 7, 8, 9

ls = [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]]

for i in range(len(ls)):
    ls[i][0] = 100

print(ls)    
print(a1, b1, c1)

""" Output:
[[100, 2, 3], [100, 5, 6], [100, 8, 9]]
1 4 7
"""

我想我正在进入“复制”与“深层复制”的领域。 我该怎么做?

python list variable-assignment
1个回答
0
投票

这里的问题是 Python

int
值是不可变的,并且您没有在
a1
中存储对
a2
ls
等变量的引用。相反,您存储的是这些变量指向的值,这些值是不可变的。

如果我们使用可变类型,我们会看到类似于您所期望的内容。

>>> a1, a2 = [1,2], [3,4]
>>> ls = [a1, a2]
>>> ls
[[1, 2], [3, 4]]
>>> ls[0].append(56)
>>> ls
[[1, 2, 56], [3, 4]]
>>> a1
[1, 2, 56]

但是

ls[0]
仍然不包含任何对
a1
的引用。

>>> a1 = 42
>>> ls
[[1, 2, 56], [3, 4]]

只是当时,

a1
ls[0]
都是同一个可变的
list
值的名称。然后,我们通过为
a1
指定不同值的名称来更改它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.