人,
假设我想在Python中将'abc'更改为'bac'。最好的方法是什么?
我正在考虑以下
tmp = list('abc')
tmp[0],tmp[1] = tmp[1],tmp[0]
result = ''.join(tmp)
答案 0 :(得分:2)
你永远不会在“就地”编辑字符串,字符串是不可变的。
您可以使用列表来执行此操作,但这会浪费代码和内存。
为什么不这样做:
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'那么简单。您可能想要提供有关如何拆分字符串的详细信息。它总是只是交换第一个数字?
答案 1 :(得分:1)
您无法修改字符串,它们是不可变的。如果要修改列表,可以像在示例中那样进行,或者如果可以使用切片访问要替换的元素,则可以使用切片分配:
tmp = list('abc')
tmp[0:2] = tmp[1::-1] # replace tmp[0:2] with tmp[1::-1], which is ['b', 'a']
result = ''.join(tmp)