尝试交换字符串中的所有元音,原始字符串在下面。我把所有元音及其对应词的索引放到一个元组列表中。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
提交
取消