【发布时间】:2022-01-20 02:24:12
【问题描述】:
所以基本上我有两个列表 a 和 b 并像 a=b=[10] 一样定义它们,所以改变一个会改变另一个 -
a=b=[10]
a[0]+=1
a
>>>[11]
b
>>>[11]
有没有办法做到这一点,而是让它给变量的两倍?期望的输出 -
a=b=[10]
#some code
a
>>>[10]
b
>>>[20]
【问题讨论】:
-
什么是内存值?
-
喜欢变量的id
-
id(a)将返回与id(b)相同的值 -
您可以使用实例属性来执行此操作(使
instance.b成为属性,从instance.a计算值),但不能使用普通变量。 -
问题是,一旦你这样做了,你就不能改变像 -
class foo: def __init__(self,a): self.a=a self.b=a*2这样的值,然后如果你称之为c=foo(2)然后做c.a=3然后c.b不会改变为6跨度>
标签: python list memory mutability