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

Python如何在字符串列表中查找子串所有匹配项并返回对应索引

问题原因

你的原代码存在两个逻辑问题:

  1. search_term in a_list 是判断列表中是否存在完全等于搜索词的元素,而非判断元素是否包含该子串
  2. list.index() 只会返回第一个完全匹配的元素的索引,无法遍历所有元素做子串匹配

正确实现

写法1:列表推导式(最简洁)

直接遍历列表的索引和对应元素,判断子串是否存在于元素中,符合条件就保留索引:

def inside_search(a_list, search_term):
    return [idx for idx, item in enumerate(a_list) if search_term in item]

写法2:普通循环(可读性更高,适合需要加额外逻辑的场景)

def inside_search(a_list, search_term):
    res = []
    for idx, item in enumerate(a_list):
        if search_term in item:
            res.append(idx)
    return res

测试验证

用你给出的两个场景测试:

# 第一个测试场景
sub_string = "tree"
my_list = ["banana", "tree", "trees", "street"]
print(inside_search(my_list, sub_string)) # 输出 [1, 2, 3]

# 第二个测试场景
cats_and_dogs_list = ["cat", "cats", "dog", "dogs", "catsup"]
print(inside_search(cats_and_dogs_list, "cat")) # 输出 [0, 1, 4]

输出和你期望的完全一致。

内容的提问来源于stack exchange,提问作者H20zzz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:18:01