我正在尝试交换位置值。
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'
请注意,maketrans
是str
类的静态方法,这就是为什么它通常被称为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