python更改列表元素_Python:更改列表列表中的元素

正如其他人所解释的,这里的问题是int对象是不可变的

真的吗two[0][0] = 9

不会更改旧的two[0][0]对象,而是创建新对象,并使两个[0][0]引用这个新对象(如果没有其他对象引用,则旧对象被垃圾回收)

在创建两个数组之后,为了更清楚地说明这一点,我们使用了以下方法(-->表示引用)

^{pr2}$

当你执行two[0][0] = 9

对象引用如下所示one[0][0] --> object(1)

two[0][0] --> object(9)

所以要解决这个问题,我们需要将数组中的值更改为可变的

我已经创建了一个非常简单的类来保存int并用它生成数组,这就解决了您的问题

这是工作代码class IntHolder:

def __init__(self,int_value):

self.intvalue = int_value

def set_value(self,int_value):

self.intvalue = int_value

def __str__(self):

return str(self.intvalue)

def __repr__(self):

return str(self.intvalue)

def __str__(self):

return str(self.intvalue)

one = [

[IntHolder(1), IntHolder(2), IntHolder(3), IntHolder(4)],

[IntHolder(2), IntHolder(3), IntHolder(4), IntHolder(5)],

[IntHolder(3), IntHolder(4), IntHolder(5), IntHolder(6)],

[IntHolder(4), IntHolder(5), IntHolder(6), IntHolder(7)]

]

two = [

[one[0][0], one[0][1], one[1][0], one[1][1]],

[one[0][2], one[0][3], one[1][2], one[1][3]],

[one[2][0], one[2][1], one[3][0], one[3][1]],

[one[2][2], one[2][3], one[3][2], one[3][3]]

]

two[0][0].set_value(9)

print one

print two

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值