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

Python二维网格使用list.index()查找元素索引报错求助

二维列表中查找元素索引的问题解决方法

报错原因

你用grid.index(200)触发ValueError是因为list.index()仅在当前列表的直接子元素中查找目标值。你的grid是二维列表,它的直接元素是一个个子列表(比如[200,200,...]),而非单个整数200,因此方法无法找到目标,抛出错误。


方法1:查找第一个出现的200的索引

遍历每一行,在每行内查找目标元素,找到后立即返回索引:

grid = [[200, 200, 200, 200, 200, 200, 200], [200, 200, 200, 400, 200, 78, 200], [200, 200, 400, 400, 200, 75, 200], [200, 200, 400, 400, 300, 200, 200], [200, 300, 200, 400, 400, 200, 200], [200, 14, 200, 52, 200, 84, 200], [200, 200, 200, 200, 200, 200, 200]]

for row_idx, row in enumerate(grid):
    try:
        col_idx = row.index(200)
        print(f"第一个200的索引:({row_idx}, {col_idx})")
        break
    except ValueError:
        continue

方法2:查找所有200的索引

通过嵌套循环遍历每个元素,记录所有匹配目标值的行列索引:

grid = [[200, 200, 200, 200, 200, 200, 200], [200, 200, 200, 400, 200, 78, 200], [200, 200, 400, 400, 200, 75, 200], [200, 200, 400, 400, 300, 200, 200], [200, 300, 200, 400, 400, 200, 200], [200, 14, 200, 52, 200, 84, 200], [200, 200, 200, 200, 200, 200, 200]]

all_indices = []
for row_idx, row in enumerate(grid):
    for col_idx, val in enumerate(row):
        if val == 200:
            all_indices.append((row_idx, col_idx))

print("所有200的索引:", all_indices)

方法3:用列表推导式简化(查找所有索引)

如果偏好简洁写法,可用列表推导式实现方法2的逻辑:

grid = [[200, 200, 200, 200, 200, 200, 200], [200, 200, 200, 400, 200, 78, 200], [200, 200, 400, 400, 200, 75, 200], [200, 200, 400, 400, 300, 200, 200], [200, 300, 200, 400, 400, 200, 200], [200, 14, 200, 52, 200, 84, 200], [200, 200, 200, 200, 200, 200, 200]]

all_indices = [(i, j) for i, row in enumerate(grid) for j, val in enumerate(row) if val == 200]
print("所有200的索引:", all_indices)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:50:17