Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字符串就地修改_Python_String - Fatal编程技术网

python字符串就地修改

python字符串就地修改,python,string,Python,String,各位 假设我想在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:] 或(个人fav) 这可能是作弊,但如果您真的想就地编辑,并且使用2.6或

各位

假设我想在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:]
或(个人fav)

这可能是作弊,但如果您真的想就地编辑,并且使用2.6或更高版本,那么请使用MutableString(这在3.0中被弃用)


话虽如此,解决方案通常不像“abc”=“bac”那么简单。您可能希望向我们提供有关如何拆分字符串的更多详细信息。它总是只交换第一个数字吗

您永远不会“就地”编辑字符串,字符串是不可变的

你可以用一个列表来做,但那是在浪费代码和内存

为什么不干脆做:

x = 'abc'
result = x[1] + x[0] + x[2:]
或(个人fav)

这可能是作弊,但如果您真的想就地编辑,并且使用2.6或更高版本,那么请使用MutableString(这在3.0中被弃用)


话虽如此,解决方案通常不像“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)

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

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

不,我只想把绳子换好。在这种情况下,将其拆分为字符列表是最好的选择吗?它本质上是一个字符串列表。您不需要将其转换为列表。@nos-Python不是C,您没有直接访问字符串的权限来修改它。无论您认为您正在对列表和切片等执行什么操作,您都没有在适当的位置编辑字符串。这是什么意思?不要再担心更新是否“到位”,只需像Nix的第一个示例中那样创建一个新字符串,然后转到程序中其他更重要的部分。@nos:但为什么要在适当的位置更改字符串?Python并不是为它而构建的。你在与这种语言作斗争,而不是利用它为自己谋利。只需将字符串替换为新字符串,即可完成。@否:但将字符串咀嚼到列表中并交换前两个ELT也不是“就地”更新,因为您仍然需要将列表重新连接到字符串中并重新分配。那么,为什么不遵循尼克斯的解决方案呢?不,我只想在适当的位置更改字符串。在这种情况下,将其拆分为字符列表是最好的选择吗?它本质上是一个字符串列表。您不需要将其转换为列表。@nos-Python不是C,您没有直接访问字符串的权限来修改它。无论您认为您正在对列表和切片等执行什么操作,您都没有在适当的位置编辑字符串。这是什么意思?不要再担心更新是否“到位”,只需像Nix的第一个示例中那样创建一个新字符串,然后转到程序中其他更重要的部分。@nos:但为什么要在适当的位置更改字符串?Python并不是为它而构建的。你在与这种语言作斗争,而不是利用它为自己谋利。只需将字符串替换为新字符串,即可完成。@否:但将字符串咀嚼到列表中并交换前两个ELT也不是“就地”更新,因为您仍然需要将列表重新连接到字符串中并重新分配。那么为什么不遵循尼克斯的解决方案呢?我希望你不仅仅想要
str.replace
?我希望你不仅仅想要
str.replace