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

Python如何使用通配符查找列表中匹配前三个子元素的项的索引

通配符用法错误原因

Python原生的list.index()方法执行的是严格的完全相等匹配,你传入的['4','5','6','*','*']是一个独立的列表对象,方法会将它和目标列表中的每个子列表逐元素做全等比对,你的原列表中不存在第四、五位为'*'的子项,自然会抛出不存在的错误。Python列表没有内置通配符匹配的逻辑,这种写法不符合原生语法规则。

更高效的实现方案

因为你需要在循环中多次执行匹配查询,最高效的方式是预先构建一次查找索引映射,后续所有查询都是O(1)时间复杂度,不需要每次都遍历整个列表:

# 预先构建映射:key是子列表前三位的元组(列表不能作为字典key,需转成元组),value是对应索引
lookup = {tuple(item[:3]): idx for idx, item in enumerate(a)}

# 后续查询直接调用,比如查['4','5','6']对应的索引
target = ('4','5','6')
ind = lookup.get(target) # 匹配到返回1,匹配不到返回None

如果仅需要做单次查询,不需要多次复用的话,可以用更简洁的写法,性能也优于你原来的列表推导式:

ind = next(idx for idx, item in enumerate(a) if item[:3] == ['4','5','6'])
# 如果要处理匹配不到的情况、避免抛出异常,可以加默认返回值
ind = next((idx for idx, item in enumerate(a) if item[:3] == ['4','5','6']), -1)

这种写法用enumerate直接获取索引+元素,通过切片比对前三位,代码更简洁,执行效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:57:05