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