Python字符串元音互换问题:代码输出不符及修正方案
字符串元音互换的实现问题与解决
需求
实现字符串中的元音互换:比如输入hello,要输出holle,也就是把字符串里的元音按反向顺序替换(原字符串里的第一个元音换成最后一个,第二个换成倒数第二个,以此类推)。
初始代码及问题
我写了下面的代码来实现:
vowels = ['a','e','i','o','u'] first_str = 'aiao' l = list(first_str) vowel_list = [] for vowel in l : if vowel in vowels: vowel_list.append(vowel) for index,value in enumerate(l): if value in vowels: # print(value) l[index] = vowel_list[-1] vowel_list.remove(vowel_list[-1]) print(vowel_list) ''.join(l)
但运行后得到的结果是oaai,而预期输出应该是oaia。
我的实现思路
- 先提取原字符串里的所有元音,存入
vowel_list - 遍历原字符串的每个字符
- 碰到元音时,用
vowel_list末尾的元素替换它,实现反向替换 - 替换完成后把这个元素从
vowel_list里移除
修正方案
感谢@pranav的建议,改用pop方法后代码可以正常运行,修正后的核心循环代码如下:
for index,value in enumerate(l): if value in vowels: l[index] = vowel_list.pop(-1) ''.join(l)
内容的提问来源于stack exchange,提问作者abd
相关产品推荐
相关产品推荐

