Python获取字符串同字符多实例索引及现有代码异常输出原因求解
代码异常原因
- 循环逻辑错误+变量覆盖:你最初定义
x = "o",但后续for x in string会将x重新赋值为字符串的每一个字符,实际是遍历了整个字符串的所有字符,而非你预期的只遍历值为"o"的字符,所以会输出20条结果,和预期逻辑完全不符。 index()方法特性限制:Python的str.index()方法只会返回传入字符第一次出现的索引。比如遍历到索引为8的第二个"o"时,调用string.index("o")依然返回第一个"o"的索引4,遍历到后续重复字符时都会返回该字符首次出现的位置,这就是输出中出现大量重复数值的原因。
正确实现方案
方案1:直接遍历输出匹配索引
使用enumerate()同时获取字符和对应的索引,匹配到目标字符时直接打印索引:
string = "Python for Beginners" target = "o" for idx, char in enumerate(string): if char == target: print(idx)
运行后输出:
4 8
方案2:收集所有匹配索引到列表
如果需要后续使用这些索引,可以用列表推导式一次性生成结果:
string = "Python for Beginners" target = "o" index_list = [idx for idx, char in enumerate(string) if char == target] print(index_list)
运行后输出:
[4, 8]
内容的提问来源于stack exchange,提问作者Hex
相关产品推荐
相关产品推荐

