【发布时间】:2018-09-13 08:04:57
【问题描述】:
本质上,我这样做:
a = True
b = False
ls = [a, b]
a = False
print(ls)
> [True, False]
而发生的事情是 a 发生的任何事情都会在第一次包含后与列表分离。有什么方法可以更新a 并让列表以干净的方式自行更新?
当然,我可以简单地执行ls[0] = False 并完成。但是在一个大型项目中,有很多活动部件,我想避免非描述性的括号索引。
我假设我可以对实例化类做一些混乱的构造,然后迭代属性,但这听起来很麻烦。还是这样?
【问题讨论】:
-
ls是tuple并且元组是不可变的。将其更改为列表并不能解决问题,但您不能指望更新元组。 -
Python中有copy、deepcopy等概念。
-
a是对象的名称。如果您分配给a,则不会更改您更改a引用的对象。 -
简而言之:没有。分配给符号(变量名)只会影响该符号。除非你改变可变对象,否则这种效果永远不会传播。
-
@barny 元组是不可变的,更适合异构数据。列表更适合同类数据。
标签: python