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

Python:如何查找子列表在列表的列表中的索引?

解决Python中查找子列表在列表中的索引问题

嘿,这问题其实挺好解决的,我给你几个适合初学者的方案,先从最基础的开始讲~

首先得先修正你示例代码里的一个小问题:Python的列表元素之间必须用逗号分隔,你原来的代码里元素直接挨在一起会报错,所以先把X和X_test改成正确的格式:

X = [[5, 1, 1, 1, 2, '1', 3, 1, 1],
     [5, 4, 4, 5, 7, '10', 3, 2, 1],
     [3, 1, 1, 1, 2, '2', 3, 1, 1],
     [6, 8, 8, 1, 3, '4', 3, 7, 1],
     [4, 1, 1, 3, 2, '1', 3, 1, 1]]
X_test = [[3, 1, 1, 1, 2, '2', 3, 1, 1],
          [6, 8, 8, 1, 3, '4', 3, 7, 1]]

方法一:直观循环匹配(适合理解逻辑)

这是最容易看懂的方法,直接遍历X的每个元素和它的索引,然后和X_test里的元素逐一比对,找到匹配的就记录索引:

result = []
# 遍历X_test里的每个待查找子列表
for test_item in X_test:
    # 用enumerate同时获取X中元素的索引和值
    for idx, item in enumerate(X):
        if item == test_item:
            result.append(idx)
            break  # 找到匹配就退出内层循环,避免重复查找(如果X有重复子列表可去掉)

print(result)  # 输出:[2, 3]

这种方法逻辑清晰,适合刚学Python的你理解整个匹配过程,缺点是如果X的规模很大,效率会稍低,但对于你的示例数据完全够用。

方法二:字典映射(高效查找)

如果你的X数据量比较大,想要更快的查找速度,可以先把X里的子列表和对应的索引做成一个映射字典,之后直接通过字典查找就能得到结果:

# 因为列表是可变类型,不能作为字典的键,所以先转成不可变的元组
x_index_map = {tuple(item): idx for idx, item in enumerate(X)}

# 遍历X_test,把每个子列表转成元组后查字典
result = [x_index_map[tuple(test_item)] for test_item in X_test]

print(result)  # 输出:[2, 3]

注意点:

如果X里存在重复的子列表,这个方法会保存最后一个出现的子列表的索引;而方法一则会保存第一个出现的索引,你可以根据自己的实际需求选择对应的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:23:25