3 回答
TA贡献1995条经验 获得超2个赞
不直接。该列表不会知道重新分配,也没有任何方法可以拦截重新分配并进行一些元编程。(*错误除外,见注释)。如果Variable是一个容器,你可以更新它的内容,两者都会看到。例如,它可以是 adict或 a 。list但是上课是一种方便的方法。在这个简单的示例中,所有用户都必须知道如何使用variable.val,但您也可以花时间实现所有 dunder 方法以将其抽象出来。
class Variable:
def __init__(self, val):
self.val = val
variable = Variable(1)
my_list = [0, variable, 2, 3]
variable.val += 1
my_list[1].val += 1
print(variable.val)
*请注意原始问题中的评论可以覆盖分配,但它很混乱。
TA贡献1825条经验 获得超6个赞
首先,您需要了解为什么您的代码无法按预期方式工作。首先,您声明了变量Variable并将其初始化为 1。然后在列表中使用了它。现在您的列表包含 0、Variable、2、3 的值,这与包含 0、1、2、3 值的列表相同。现在您更新了变量 called 并将其更改为 5。你看,Variable你更新了变量而不是列表......列表没有使用变量,所以它从那个变量中提取了它需要的数据,这是第一个......所以就好像你从来没有把一个变量叫做Variable,就好像你只是把数字放在第一位......所以当你更新变量时,列表只是看着它,就像“那个包裹不适合我,我已经得到了我的!”。现在足够的胡言乱语......到解决方案!首先在创建列表后,如果您知道要更新该特定值,请将其存储在一个变量中:
Variable = 1
List = [0, Variable, 2, 3]
Variable = List[1]
现在列表看到你正在使用这个值,并随之更新......所以如果你更新它你不是更新变量而是更新列表中的值:
Variable = 1
List = [0, Variable, 2, 3]
Variable = List[1]
Variable = 5
所以如果你告诉它打印列表:
print(List)
你的结果是“[0, 5, 2, 3]”!希望这有帮助!
TA贡献1802条经验 获得超5个赞
Python 变量保存值的引用。
变量 = 1 列表 = [0, 变量, 2, 3]
在您的列表中,您传递的是变量引用而不是值本身。
唯一的反映方式
列表 [1] = 变量
添加回答
举报