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
相关产品推荐
相关产品推荐

