2011-08-25 59 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'] 
相关问题