这里的基本python问题:说我有一个字符串变量
x='sdfghjk'
我只需要使用字符串的一些字符,并将它们分配给相同的名称,例如
x=x[x.index('g'):]
就内存而言,新的x
“代替”旧的,还是我创建了重复项并无缘无故地使用了额外的内存?
就内存而言,新的 x 是否“代替”了旧的 x,还是我创建了重复项,并且无缘无故地使用了额外的内存。
Python 字符串是不可变的,因此您正在创建一个副本,这将需要更多内存。如果你改为...
>>> x = 'sdfghjk'
>>> x = buffer(x, x.index('g'))
>>> print x
ghjk
...您会得到类似的结果,但该x
变量现在指的是分配原始字符串的同一块内存,如果您正在处理大量字符串,这可能会更可取。
或者,如果您想要一个可变字符串,请尝试使用bytearray
.
变量指向不同的内存。正如你看到的,
>>> x='gewfsafg'
>>> id(x)
140290029218384
>>> x=x[x.index('f'):]
>>> x
'fsafg'
>>> id(x)
140290029218288
x的id变了,旧的内存被清理了