【问题标题】:Swap characters in string交换字符串中的字符
【发布时间】:2014-09-21 00:46:33
【问题描述】:

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

【问题讨论】:

    标签: string python-2.7 swap


    【解决方案1】:

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

    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'
    

    【讨论】:

    • 太好了,我在想办法通过列表来实现。它在时间方面是否有效?因为我必须把它放在一个时间紧迫的程序中。
    • @Wajahat 已经足够好了。我更喜欢第一个选项,因为它创建的中间字符串更少,但像往常一样,最好先分析代码,然后再尝试过早地优化它。
    • 只是给想要使用此代码的任何人的注释,第二种方式使用切片和索引在 python3 中无法正常使用负索引。我建议使用第一种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多