如何更改列表中包含的引用的值?

时间:2011-08-25 10:52:12

标签: python

在python中如何更改列表中包含的引用的值? 例如,在以下代码中

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

最后一行实际上会将y替换为'overflow',但我想要做的是将l[1]中包含的引用更改为'overflow'我该如何实现相同的目标?

PS:y = 'overflow'不是公认的答案:P

上下文可能会使问题更加清楚,我在列表中初始化为零的变量有50个,我希望它们在run-time.so时设置它们的值,以便在以后的某个时间点我打印变量50,我得到的新值不是零。

4 个答案:

答案 0 :(得分:5)

您使用l[1]'overflow'l[1] = 'overflow'重新绑定参考。如果要实际修改字符串对象,则不能。字符串是不可变的。

答案 1 :(得分:4)

“改变参考文献的价值”是一种尴尬的措辞,我可以想象你有两个独立的事情:

1)使列表元素引用其他内容;但这就是你的榜样所做的,也就是你所说的你不想要的。

2)导致列表的引用元素发生变化。引用元素是一个对象,因此只能通过调用更改对象状态的代码来实现。 Python的str类型是不可变的,因此示例情况不存在此类代码。

真的试图做什么?惯用的Python代码包含引用语义而不是试图对抗它们。

答案 2 :(得分:1)

您想在列表中添加新元素并在第1位进行排序吗?这可以通过基本列表功能来实现。只是一个问题,为什么你不使用词典?

答案 3 :(得分:1)

这有趣吗?

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

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

使用python的交换

y, z = z, y

但是,你必须重新分配列表

l = [x, y]
l

['stack', 'overflow']