You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:20:35