Python中如何获取字符串中字符的所有出现索引?代码问题求助
问题分析与修正方案
你的代码问题出在w.find(l)的使用上——这个方法默认从字符串的起始位置开始查找目标字符,所以每次都会返回第一个匹配的索引(也就是2),不管循环到字符串的哪个位置,最终列表里全是重复的第一个匹配索引。
修正方法一:直接使用循环索引
既然已经在遍历字符串的每个索引i,当字符匹配时直接把i加入列表即可,这是最直观的写法:
def index(w, l): wo = [] for i in range(len(w)): if w[i] == l: wo.append(i) return wo
修正方法二:用enumerate简化遍历
Python的enumerate可以同时获取索引和对应字符,写法更简洁:
def index(w, l): return [i for i, char in enumerate(w) if char == l]
修正方法三:改进find的使用逻辑
如果想继续用find方法,可以每次从上次找到的位置的下一位开始查找,直到找不到为止:
def index(w, l): wo = [] pos = w.find(l) while pos != -1: wo.append(pos) pos = w.find(l, pos + 1) # 指定起始查找位置,避免重复找到同一个索引 return wo
测试上述任意一种写法,调用index('Mississippi', 's')都会返回预期的[2, 3, 5, 6]。
内容的提问来源于stack exchange,提问作者Mr. Green
相关产品推荐
相关产品推荐

