python-3.x 交换字符串中的字符对

ie3xauqp  于 2023-02-26  发布在  Python
关注(0)|答案(3)|浏览(208)

好吧,我是Python的新手,不知道该怎么做:
我需要取一个字符串,比如'ABAB__AB',将其转换为一个列表,然后取要移动的对的前导索引,并将该对与__交换。我认为输出应该如下所示:
move_chars('ABAB__AB', 0) '__ABABAB'
另一个例子
move_chars('__ABABAB', 3) 'BAA__BAB'
老实说我不知道该怎么做。

jvlzgdj9

jvlzgdj91#

Python字符串是不可变的,所以你不能修改一个字符串,而是创建一个新的字符串。
如果希望能够修改字符串中的单个字符,可以将其转换为字符列表,对其进行处理,然后将该列表联接回字符串。

chars = list(str)
# work on the list of characters
# for example swap first two
chars[0], chars[1] = chars[1], chars[0]
return ''.join(chars)
x8diyxa7

x8diyxa72#

我想这应该去评论区,但我不能评论,因为缺乏声誉,所以...
你可能会坚持使用列表索引交换,而不是使用.pop().append().pop() * 可以 * 从任意索引中删除元素,但一次只能删除一个,而.append() * 只能 * 添加到列表的末尾。因此,它们非常有限,在这类问题中使用它们会使代码复杂化。
因此,最好坚持使用索引交换。

abithluo

abithluo3#

诀窍是使用列表切片来移动字符串的一部分。

def move_chars(s, index):
    to_index = s.find('__')                # index of destination underscores
    chars = list(s)                        # make mutable list
    to_move = chars[index:index+2]         # grab chars to move
    chars[index:index+2] = '__'            # replace with underscores
    chars[to_index:to_index+2] = to_move   # replace underscores with chars
    return ''.join(chars)                  # stitch it all back together

print(move_chars('ABAB__AB', 0))
print(move_chars('__ABABAB', 3))

相关问题