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

Python调用列表index()定位嵌套列表元素时报ValueError 'X' is not in list

报错原因
  • gBoard是二维嵌套结构,顶层元素是每一行的子列表,而非单个数字字符串
  • Python的list.index()方法仅检索当前列表的直接子元素,不会自动深入嵌套的子列表查找值
  • 调用gBoard.index(playeronechoice)时,程序只会在顶层的8个行列表里找是否存在和输入的'60'完全相等的元素,自然匹配失败,抛出ValueError
    这个问题和输入值为60无关,任意输入棋盘内的数字都会触发同样的报错
修正方案

需要通过两层遍历定位目标单元格:先找到目标数字所在的行,再在该行内匹配列索引,最后更新对应位置的内容。
可直接替换原有逻辑的参考代码:

playeronechoice = input("Type a number to replace with your token on the board:\n")
target_row_idx, target_col_idx = None, None

# 遍历定位目标位置
for row_idx, row in enumerate(gBoard):
    if playeronechoice in row:
        target_row_idx = row_idx
        target_col_idx = row.index(playeronechoice)
        break

if target_row_idx is None:
    print("请输入棋盘范围内的有效数字")
else:
    # 按要求拼接为"数字 标记"的格式
    gBoard[target_row_idx][target_col_idx] = f"{playeronechoice} ##"
    # 打印更新后的棋盘
    for row in gBoard:
        print(" ".join(row))
原有逻辑的其他问题

原代码中gBoard[indexOne] = (playeronechoice, "##")的赋值操作,会把整个行级子列表替换为元组,直接破坏二维棋盘的结构,无法实现"在对应数字后追加玩家标记"的效果,修改为直接更新单个单元格的拼接字符串即可满足展示需求。

内容的提问来源于stack exchange,提问作者E.V.A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 13:24:03