有没有办法将列表中变量的更改反映在列表中?

例如:


Variable = 1

List = [0, Variable, 2, 3]

Variable = 5

print(List)

输出是 [0,1,2,3]。除了重新定义列表之外,还有其他方法可以获取 [0,5,2,3] 吗?另外,是否可以反向完成(即List[1] = 5,使Variable == 5)?


慕妹3242003
浏览 117回答 3
3回答

拉风的咖菲猫

不直接。该列表不会知道重新分配,也没有任何方法可以拦截重新分配并进行一些元编程。(*错误除外,见注释)。如果Variable是一个容器,你可以更新它的内容,两者都会看到。例如,它可以是 adict或 a 。list但是上课是一种方便的方法。在这个简单的示例中,所有用户都必须知道如何使用variable.val,但您也可以花时间实现所有 dunder 方法以将其抽象出来。class Variable:    def __init__(self, val):        self.val = valvariable = Variable(1)my_list = [0, variable, 2, 3]variable.val += 1my_list[1].val += 1print(variable.val)*请注意原始问题中的评论可以覆盖分配,但它很混乱。

胡子哥哥

首先,您需要了解为什么您的代码无法按预期方式工作。首先,您声明了变量Variable并将其初始化为 1。然后在列表中使用了它。现在您的列表包含 0、Variable、2、3 的值,这与包含 0、1、2、3 值的列表相同。现在您更新了变量 called 并将其更改为 5。你看,Variable你更新了变量而不是列表......列表没有使用变量,所以它从那个变量中提取了它需要的数据,这是第一个......所以就好像你从来没有把一个变量叫做Variable,就好像你只是把数字放在第一位......所以当你更新变量时,列表只是看着它,就像“那个包裹不适合我,我已经得到了我的!”。现在足够的胡言乱语......到解决方案!首先在创建列表后,如果您知道要更新该特定值,请将其存储在一个变量中:Variable = 1List = [0, Variable, 2, 3]Variable = List[1]现在列表看到你正在使用这个值,并随之更新......所以如果你更新它你不是更新变量而是更新列表中的值:Variable = 1List = [0, Variable, 2, 3]Variable = List[1]Variable = 5所以如果你告诉它打印列表:print(List)你的结果是“[0, 5, 2, 3]”!希望这有帮助!

慕后森

Python 变量保存值的引用。变量 = 1 列表 = [0, 变量, 2, 3]在您的列表中,您传递的是变量引用而不是值本身。唯一的反映方式列表 [1] = 变量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python