嘗試交換字符串中的所有元音,原始字符串在下面。我把所有元音及其對應詞的索引放到一個元組列表中。s =['a', 'd', 'e', 'f', 'i', 'g', 'u', 'k', 'o']e = [(0, 8), (2, 6), (4, 4), (6, 2), (8, 0)]for el in e: old = el[0] new = el[1] s[old], s[new] = s[new], s[old]#this does not workprint(s)我希望 s 變成:['o', 'd', 'u', 'f', 'i', 'g', 'e', 'k', 'a']交換 a 和 o, e 和 u。但字符串沒有改變。
3 回答

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
您正在迭代 all 列表,將第一個列表與最后一個列表交換,將最后一個列表與第一個列表交換,因此您又回到了起點。迭代到列表的中間:
for old, new in e[:len(e) // 2]: s[old], s[new] = s[new], s[old]

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
您可以將映射轉換為反向查找命令,以便在列表位于映射中時可以相應地映射列表的索引:
mapping = dict(map(reversed, e)) print([s[mapping.get(i, i)] for i in range(len(s))])
此輸出:
['o', 'd', 'u', 'f', 'i', 'g', 'e', 'k', 'a']
添加回答
舉報
0/150
提交
取消