Python操作3D列表报错TypeError,求问题原因及修复方法
问题分析与修复方案
错误原因
Python的普通列表不支持像NumPy数组那样用逗号分隔的元组索引,你写的cube[1:3, 1:3]会被当成用元组(1:3, 1:3)来索引列表,但列表只接受整数或单个切片当索引,所以触发了TypeError。
再看你的cube结构:这是个三维列表——最外层是5个二维列表,每个二维列表里有4个一维列表,每个一维列表包含3个字符串。你要修改的是4个一维列表:
- 第2个二维列表(索引1)里的第2、3个一维列表(索引1、2)
- 第3个二维列表(索引2)里的第2、3个一维列表(索引1、2)
修复方法
方法1:逐个赋值
直接定位每个目标位置,逐一替换:
cube[1][1] = ['*', '*', '*'] cube[1][2] = ['*', '*', '*'] cube[2][1] = ['*', '*', '*'] cube[2][2] = ['*', '*', '*']
方法2:循环批量处理
如果要修改的位置有规律,用循环更高效:
# 遍历外层需要修改的索引(1和2) for outer_idx in range(1, 3): # 遍历每个外层元素里需要修改的内层索引(1和2) for inner_idx in range(1, 3): cube[outer_idx][inner_idx] = ['*', '*', '*']
替换后运行代码,就能看到你标记的4个位置都被改成['*','*','*']了。
内容的提问来源于stack exchange,提问作者Nupur
相关产品推荐
相关产品推荐

