擅长:python、mysql、java
<p>TL;DR<code>B[2] = A</code></p>
<p>您需要了解,在python中,字符串对象是不可变的对象,
这意味着这些对象无法更改,它们的行为与可变对象不同</p>
<p>因此,在定义字符串之后,将创建一个对象。但由于该对象是不可变的,因此,如果将其他变量指定给同一对象,则在更改原始变量时,您正在创建一个新对象,而不是更改所创建的对象</p>
<p>对于可变对象,赋值与您通常所做的一样
例如,看看这个:</p>
<pre><code>In [1]: A = ['s']
In [2]: B = ['1','2','3']
In [3]: B[2] = A
In [4]: id(B[2]) == id(A)
Out[4]: True
</code></pre>
<p>对于您的示例,您可以定义一个新类而不是字符串</p>
<pre><code>In [1]: class MutableString:
...: def __init__(self, value):
...: self.value = value
...: def __str__(self):
...: return self.value
...: def __repr__(self):
...: return repr(self.value)
...:
In [2]: A = MutableString('foo')
In [3]: B = ['1', '2', '3']
In [4]: B[2] = A
In [5]: print(B)
['1', '2', 'foo']
In [6]: A.value = 'bar'
In [7]: print(B)
['1', '2', 'bar']
In [8]: id(B[2]) == id(A)
Out[8]: True
</code></pre>