gpt4 book ai didi

python - 将对象附加到数组时出现意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:35 24 4
gpt4 key购买 nike

在我正在编写的程序中,我试图将一个对象附加到列表中,对该对象进行小的更改,然后将该对象的第二个版本附加到该列表中。下面的代码不是我最初遇到此错误的代码,但它显示了同样的问题。

class A(object):
def __init__(self):
self.val = 0

def __str__(self):
return str(self.val)

a = A()
b = []
for i in range(10):
b.append(a)
a.val += 1

for a in b:
print(a)

这是预期的输出:

0
1
2
3
4
5
6
7
8
9

这是实际输出:

10
10
10
10
10
10
10
10
10
10

最佳答案

您在 for 循环的每次迭代中为 同一对象 分配一个新值。您需要每次都创建一个新对象,并像这样给它一个值:

class A(object):
def __init__(self):
self.val = 0

def __str__(self):
return str(self.val)

b = []
for i in range(10):
b.append(A())
b[i].val = i;


for a in b:
print(a)

哪些输出

0
1
2
3
4
5
6
7
8
9

关于python - 将对象附加到数组时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com