交换字母的位置

  • 本文关键字:位置 交换 python
  • 更新时间 :
  • 英文 :


我正在尝试交换位置值。

a应分配给e,反之亦然

b应分配给g,反之亦然

有什么简单的方法吗?

My code:

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

你可以这样做:

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

翻译成<->E和所有b <->g .

的例子:

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

请注意,maketransstr类的静态方法,这就是为什么它通常被称为str.maketrans(),尽管它也可以从str1字符串作为str1.maketrans()调用。通常用第一种方法。

>>> str1="abcdefg"
>>> swap = {
...     'a': 'e',
...     'b': 'g',
...     'e': 'a',
...     'g': 'b',
... }
>>> ''.join(swap.get(c, c) for c in str1)
'egcdafb'

尝试:

"".join([{"a":"e","e":"a","b":"g","g":"b"}.get(i, i) for i in "abcdefg"])

如果你想使用for循环和if/elif块,你可以这样做:

str1="abcdefg"
output = ""
for c in str1:
if c == "a":
output += "e"
elif c == "b":
output += "g"
elif c == "e":
output += "a"
elif c == "g":
output += "b"
else:
output += c

相关内容

  • 没有找到相关文章

最新更新