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

Python3.9.6下numpy.matrix()处理嵌套列表报错原因求解

问题解答

核心认知偏差纠正

你出现误解的核心原因是对Python可变对象的传参逻辑认知不到位:

  • Python中的列表属于可变对象,作为参数传入函数时传递的是对象的内存引用,而非独立副本。
  • 你的clean_input函数内对row执行的元素赋值、append()操作,都是直接修改传入的原列表对象,并不会自动生成新列表。因此你遍历row_list调用函数的过程中,row_list内的所有子列表已经被同步修改,和你是否把返回值存入clear_list没有关系。

两种运行现象的原因解释

1. 保留第40行print(np.matrix(row_list))时报错

执行第40行代码时,还未运行后续的clean_input调用逻辑,此时row_list内的子列表长度参差不齐(比如list(row3)是空列表,list(row5)长度为1)。numpy将长度不一致的嵌套序列转为矩阵/数组时,就会触发你看到的VisibleDeprecationWarning警告,输出的是object类型的不规则数组,不符合9*9的预期。

2. 删除第40行print后运行正常

删除第40行后,执行print逻辑前已经跑完了遍历调用clean_input的循环,此时row_list内的所有子列表都被修改为长度为9的列表,嵌套序列长度统一,numpy转矩阵时不会触发警告,会正常输出9*9的字符矩阵。

修复建议

如果你不希望调用clean_input时修改原row_list的内容,可以在传参时传入子列表的拷贝:

for element in row_list:
    # 传入列表的浅拷贝,修改不会影响原列表
    clear_list.append(clean_input(element.copy()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:15:02