2011-08-25 22 views
2

在python中如何更改列表中包含的引用的值? 例如在下面的代碼如何更改列表中包含的引用的值?

x = 'stack' 
y = 'exchange' 
l = [x,y] 
l[1] = 'overflow' 

最後一行實際上將取代y'overflow'但我想要做的是改變在l[1]載到'overflow'我怎樣才能達到同樣的參考?

PS:y = 'overflow'不是一個公認的答案:P

的情況下可能會使問題更加清晰有50個變量,我必須初始化爲零名單內,我希望他們在遊程設置它們的值time.so,當在稍後的時間點,我做一個打印變量50,我得到的新值不爲零。

回答

5

您在l[1]'overflow'處用l[1] = 'overflow'重新參考。如果你想實際修改字符串對象,你不能。字符串是不可變的。

+3

...如果你想改變它的另一種方式,你可以」要麼。引用被視爲值。 – delnan

1

你想添加一個新的元素到你的列表中,並將其排序在位置1?這可以通過基本列表功能來實現..只是一個問題,你爲什麼不使用字典?

4

「改變的參考值」是尷尬的措辭,並有兩個獨立的事情,我可以想像,你的意思是:

1)導致列表指別的東西的元素;但這就是你的例子所做的,就是你說你不想要的。

2)使列表的被引用元素改變。被引用的元素是一個對象,所以這隻能通過調用改變對象狀態的代碼來實現。 Python的str類型是不可變的,所以這種情況下不存在這樣的代碼。

你在幹什麼真的想幹什麼?習慣性Python代碼包含引用語義,而不是試圖與它們對抗。

+0

我想要做的事情會讓y的價值變成'溢價' –

+1

......這不是我問的。你真的**想做什麼? –

+0

我只是更新與上下文的問題,希望它更清晰 –

1

這很有趣嗎?

x = 'stack' 
y = 'exchange' 
z = 'overflow' 

l = [x, y] 
l 
['stack', 'exchange'] 

使用Python的交換

y, z = z, y 

但之後,你要重新分配列表

l = [x, y] 
l 

['stack', 'overflow'] 
相關問題