Python如何在字符串列表中查找子串所有匹配项并返回对应索引
问题原因
你的原代码存在两个逻辑问题:
search_term in a_list是判断列表中是否存在完全等于搜索词的元素,而非判断元素是否包含该子串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
相关产品推荐
相关产品推荐

