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

Python嵌套列表赋值报错:TypeError: list indices must be integers

问题原因及解决方法

一、TypeError 原因

你执行map[new_list] = "X"报错的核心原因是:Python的列表索引只能是整数或切片对象,不能直接用另一个列表(比如new_list)作为索引。嵌套列表的正确索引方式是外层列表[行索引][列索引],而非直接传入包含行和列的列表。

二、索引越界原因

出现索引越界通常有两个情况:

  • 输入的两位数对应的行/列数字,超过了网格实际的行/列数(比如网格是3行3列,输入45,行数字4超出了0-2的有效索引范围);
  • 未处理“输入数字从1开始,而Python列表索引从0开始”的差异(比如输入11想定位第一行第一列,但直接转成索引1的话,会超出3行网格的0-2索引范围)。

三、解决步骤(无循环/函数版本)

1. 明确网格结构

假设初始藏宝图是3x3的嵌套列表:

treasure_map = [
    ["O", "O", "O"],
    ["O", "O", "O"],
    ["O", "O", "O"]
]

2. 正确处理输入并转换索引

拆分输入的两位数,将“1开始”的位置转换为Python的“0开始”索引:

# 获取用户输入的两位数
position = input("请输入两位数定位:")
# 拆分字符并转成索引(减1适配0开始的规则)
row_idx = int(position[0]) - 1
col_idx = int(position[1]) - 1

3. 安全替换对应位置

先检查索引合法性,避免越界,再替换元素:

# 获取网格的总行数和总列数
total_rows = len(treasure_map)
total_cols = len(treasure_map[0])  # 假设每行长度一致

# 验证索引是否在有效范围内
if 0 <= row_idx < total_rows and 0 <= col_idx < total_cols:
    treasure_map[row_idx][col_idx] = "X"
else:
    print("输入的位置超出藏宝图范围,请重新输入!")

4. 查看结果

如果不想用循环,可逐行打印网格:

print(treasure_map[0])
print(treasure_map[1])
print(treasure_map[2])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:55:13