繁体   English   中英

python字符串就地修改

[英]python string in-place modification

乡亲们

假设我想在Python中将'abc'更改为'bac'。 最好的方法是什么?

我在想以下

tmp = list('abc')
tmp[0],tmp[1] = tmp[1],tmp[0]
result = ''.join(tmp)

您永远不会在原位编辑字符串,字符串是不可变的。

您可以使用列表来完成此操作,但这浪费了代码和内存。

为什么不做:

x = 'abc'
result = x[1] + x[0] + x[2:]

或(个人收藏)

import re
re.sub('(.)(.)', r'\2\1','abc')

这可能是作弊,但是如果您真的想在地方进行编辑 ,并且正在使用2.6或更早版本,请使用MutableString(在3.0中已弃用)。

from UserString import MutableString
x = MutableString('abc')
x[1], x[0] = x[0], x[1]
>>>>'bac'

话虽这么说,解决方案通常不像'abc'='bac'那样简单。您可能想向我们提供更多有关如何拆分字符串的详细信息。 是否总是只交换第一位数字?

您不能就地修改字符串,因为它们是不可变的。 如果要在适当位置修改列表,则可以像在示例中那样进行修改,或者如果可以使用切片访问要替换的元素,则可以使用切片分配:

tmp = list('abc')
tmp[0:2] = tmp[1::-1]   # replace tmp[0:2] with tmp[1::-1], which is ['b', 'a']
result = ''.join(tmp)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM