在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,我得到的新值不是零。
答案 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']