为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2023-06-20 13:34:49
例如:Variable = 1List = [0, Variable, 2, 3]Variable = 5print(List)输出是 [0,1,2,3]。除了重新定义列表之外,还有其他方法可以获取 [0,5,2,3] 吗?另外,是否可以反向完成(即List[1] = 5,使Variable == 5)?
查看完整描述

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)

*请注意原始问题中的评论可以覆盖分配,但它很混乱。

查看完整回答
反对 回复 2023-06-20
?
胡子哥哥

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]”!希望这有帮助!


查看完整回答
反对 回复 2023-06-20
?
慕后森

TA贡献1802条经验 获得超5个赞

Python 变量保存值的引用。

变量 = 1 列表 = [0, 变量, 2, 3]

在您的列表中,您传递的是变量引用而不是值本身。

唯一的反映方式

列表 [1] = 变量


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信