交换字符串中的字符

时间:2014-09-21 00:46:34

标签: string python-2.7 swap

我是python的新手,我想知道如何在字符串中交换两个字符。我知道字符串是不可变的所以我需要找到一种方法来创建一个交换字符的新字符串。 具体来说,一个通用的方法,它取一个字符串和两个索引i,j并用i交换i上的字符。

2 个答案:

答案 0 :(得分:13)

正如您所说,字符串是不可变的,不能就地修改 - 但我们可以使用交换的字符创建一个新字符串。这里有一个想法:让我们将字符串转换为列表,交换列表中的元素,然后将列表转换回字符串:

def swap(s, i, j):
    lst = list(s)
    lst[i], lst[j] = lst[j], lst[i]
    return ''.join(lst)

另一种可能的实现是使用切片和索引来操作字符串:

def swap(s, i, j):
    return ''.join((s[:i], s[j], s[i+1:j], s[i], s[j+1:]))

无论哪种方式,它都按预期工作:

swap('abcde', 1, 3)
=> 'adcbe'

答案 1 :(得分:-1)

您可以尝试:

s = 'ABCD'
s = s.replace('A','$').replace('D','A').replace('$','D')
print(s)

Python将从左到右开始替换,您可以指定要替换多少次,例如我要替换一次:

s.replace('A','$',1)

您还可以分割和[:]以指定应更改的字符串。