嘗試交換字符串中的所有元音,原始字符串在下面。我把所有元音及其對應(yīng)詞的索引放到一個(gè)元組列表中。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 回答

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
你交換的所有東西,你交換了兩次...如果與 交換,則使用 ,則將其全部按原始順序放回原來。0
8
8
0
不要對相同的元素進(jìn)行兩次交換。

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

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以將映射轉(zhuǎn)換為反向查找命令,以便在列表位于映射中時(shí)可以相應(yīng)地映射列表的索引:
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']
添加回答
舉報(bào)
0/150
提交
取消