3 回答

TA貢獻1995條經(jīng)驗 獲得超2個贊
不直接。該列表不會知道重新分配,也沒有任何方法可以攔截重新分配并進行一些元編程。(*錯誤除外,見注釋)。如果Variable是一個容器,你可以更新它的內(nèi)容,兩者都會看到。例如,它可以是 adict或 a 。list但是上課是一種方便的方法。在這個簡單的示例中,所有用戶都必須知道如何使用variable.val,但您也可以花時間實現(xiàn)所有 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條經(jīng)驗 獲得超6個贊
首先,您需要了解為什么您的代碼無法按預(yù)期方式工作。首先,您聲明了變量Variable并將其初始化為 1。然后在列表中使用了它?,F(xiàn)在您的列表包含 0、Variable、2、3 的值,這與包含 0、1、2、3 值的列表相同?,F(xiàn)在您更新了變量 called 并將其更改為 5。你看,Variable你更新了變量而不是列表......列表沒有使用變量,所以它從那個變量中提取了它需要的數(shù)據(jù),這是第一個......所以就好像你從來沒有把一個變量叫做Variable,就好像你只是把數(shù)字放在第一位......所以當(dāng)你更新變量時,列表只是看著它,就像“那個包裹不適合我,我已經(jīng)得到了我的!”?,F(xiàn)在足夠的胡言亂語......到解決方案!首先在創(chuàng)建列表后,如果您知道要更新該特定值,請將其存儲在一個變量中:
Variable = 1
List = [0, Variable, 2, 3]
Variable = List[1]
現(xiàn)在列表看到你正在使用這個值,并隨之更新......所以如果你更新它你不是更新變量而是更新列表中的值:
Variable = 1
List = [0, Variable, 2, 3]
Variable = List[1]
Variable = 5
所以如果你告訴它打印列表:
print(List)
你的結(jié)果是“[0, 5, 2, 3]”!希望這有幫助!

TA貢獻1802條經(jīng)驗 獲得超5個贊
Python 變量保存值的引用。
變量 = 1 列表 = [0, 變量, 2, 3]
在您的列表中,您傳遞的是變量引用而不是值本身。
唯一的反映方式
列表 [1] = 變量
添加回答
舉報