首页 > 解决方案 > 交换字母位置

问题描述

我正在尝试交换位置值。

a应该被分配,e反之亦然

b应该被分配,g反之亦然

有什么简单的方法吗?

我的代码:

str1="abcdefg"
clst=list(str1)
index_lst1=[]
index_lst2=[]
final_lst=[]

for i in range (len(clst)):
    if clst[i] == 'a' or clst[i] == 'b':
        index_lst1.append(i)
    elif clst[i] == 'e' or clst[i] == 'g':
        index_lst2.append(i)
    else:
        pass

final_lst.extend(index_lst1)
final_lst.extend(index_lst2)

for i in range(len(clst)):
    x=clst[0]
    y=clst[1]
    
    if i == 0:
        b=clst[4]
        clst[0]=b
        clst[4]=x
    elif i == 1 :
        c=clst[6]
        clst[1]=c
        clst[6]=y

print(clst)

预期输出:

egcdafb

标签: python

解决方案


你可以这样做:

str1.translate(str.maketrans("abeg", "egab"))

这将翻译所有 a <-> e 和所有 b <-> g。

例子:

>>> "abcdefg".translate(str.maketrans("abeg", "egab"))
'egcdafb'

请注意,这是该类maketrans的静态方法str,这就是为什么它通常被称为 as 的原因str.maketrans(),尽管它也可以从您的str1字符串中调用str1.maketrans()。它通常以第一种方式完成。


推荐阅读