我如何克隆阵列以具有可选的true和false字段?

2024-04-16 10:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道Python是如何处理变量和列表的——我想把一个50个元素的数组克隆成一个100个元素的数组,但是每个元素后面都跟一个具有相同值和字段的元素,但是True而不是一个字段的False

global A
A = list()

for i in range(100):
    A.append(0)

index = 0

for i in range(50):
    A[index] = self.b[i]
    A[index + 1] = self.b[i]
    print ("It was " + str(A[index].f)) # always prints False
    print ("It was " + str(A[index + 1].f)) # always prints False
    A[index].f = False # pointless, but just making sure in my insanity 
    A[index + 1].f = True
    print ("This should be false: " + str(A[index].f)) # always prints True 
    print ("This should be true: " + str(A[index+1].f)) # always prints True as well 

1条回答
网友
1楼 · 发布于 2024-04-16 10:21:38

列表仅保存对对象的引用;如果你这样做

    A[index] = self.b[i]
    A[index + 1] = self.b[i]

然后,突变A[index]A[index + 1]self.b[i]都将突变相同的对象

使用deepcopy,即

    A[index] = self.b[i]
    A[index + 1] = copy.deepcopy(self.b[i])

将留给您另一个索引的单独副本

相关问题 更多 >