这可能没什么意义,但我想更改以下内容以显示'x'
而不是'a'
>>> a = "a"
>>> b = "b"
>>> c = "c"
>>> d = [a, b, c]
>>> d[0] = "x"
>>> a
'a'
是否有可能以某种方式出现这种行为?不仅是字符串,也适用于其他对象。
答案 0 :(得分:1)
字符串在Python中是故意不可变的。
您的选择是将字符串存储在可变容器中,或者使用其他一些可变的数据类型。
此示例将每个字符串存储在可变容器(您自己的类或其他列表中)中。
a = ["a"]
b = ["b"]
c = ["c"]
d = [a, b, c]
d[0][0] = "x"
a = d[0][0]
print(a)
将打印"x"
但在这种情况下,bytearray
可能是更好的选择。
a = bytearray(b'abc')
a[2] = ord(b'x')
a = chr(a[2])
print(a)
也会打印“x”。
答案 1 :(得分:0)
你实际做的是将a,b和c传递给d []作为参考。然后d指的是那些字符串而不是变量。
它并不关心a,b或c等于什么。您在注释中给出了一个示例,但实际上在运行时不起作用:
>>> a = "a"
>>> b = "b"
>>> c = "c"
>>> d = [a, b, c]
>>> a = "x"
>>> a
'x'
>>> d
['a', 'b', 'c']
>>> c = 12
>>> c
12
>>> d
['a', 'b', 'c']
答案 2 :(得分:0)
变量是对象的标签。
d
是一个标签列表。
a
是对象的标签。 'a'
是一个不可变对象。如果您想更改a
以显示'x'
,则必须更改其指向的内容:
>>> a = 'x'
>>> a
'x'
或者:
>>> a = d[0]
>>> a
'x'
答案 3 :(得分:0)
a
是x
:
a = "a"
b = "b"
c = "c"
d =[a,b,c]
d[0] = "x"
a = d[0]
print a
输出为x
答案 4 :(得分:0)
不,你不能,因为当你指定l=[a,b,c]
时,你将a
的值放在l
中,而不是a
。
佩戴最接近的东西:
class ref:
value=0
def __init__(self,x):
self.value=x
def __repr__(self):
return repr(self.value)
a=ref('a')
b=ref('b')
c=ref('c')
l=[a,b,c]
l[0].value='x'
print(a)
>>>> 'x'