我有一个包含对象列表的列表。更具体地说
l = [ [X1,X2],[X3,X4]]
其中X1,X2,X3,X4
是对象
现在,我在类定义中有一个方法,它获取对象列表,并修改当前对象的属性。因此
Class X:
def __init__(self,value=1):
self.value = value
def func (self,l):
total = 0
for x in l:
total += x.value
self.value = total
我遇到的问题如下。我必须使用l[0]的元素对l[1]的元素应用函数func。然而,当我这样做的时候,发现l[0]的元素也在改变。因此,当我输入
for obj in l[1]:
obj.func(l[0])
然后我看到l[0]的元素有理想情况下应该赋给l[1]的值。 列表创建如下
l0 = []
for i in range(2):
newx= X(i)
l.append(newx)
l=[]
l.append(l0)
l.append(l0)
我错过了什么
更正:似乎python不会在每次附加现有列表时都创建新的列表对象。我基本上需要使用copy命令复制列表。因此,它正在修改现有对象
在这里,您将同一列表追加两次。对一个列表中对象的更改将显示在另一个列表中,因为它们是同一个列表
要得到想要的结果,必须创建两个列表,而不是重用第一个列表
相关问题 更多 >
编程相关推荐