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

Python实现matrix列表转置报TypeError:function无len()如何解决

错误原因

  • 装饰器传参逻辑错误:使用@transpose_matriks装饰matrixY函数时,入参mat_a实际接收的是matrixY函数对象本身,而非待转置的矩阵数据,调用长度计算时就会触发函数无len()的报错
  • 被装饰函数返回值错误:matrixY中返回了自身函数对象matrixY,而非定义的矩阵数据
  • 缺少自定义函数定义:代码中使用的pjg_matriks、lbr_matriks函数未实现,运行时会触发未定义报错
  • 原矩阵结构不符合转置需求:一维列表不存在转置逻辑,结合你期望的输出[3,4,2,5]反推,原矩阵应为2行2列的二维列表

修改后可运行代码

def transpose_matriks(func):
    def wrapper():
        # 执行被装饰函数获取待转置的矩阵数据
        mat_a = func()
        temp_row = []
        temp_mat = []
        # 用内置len方法直接获取矩阵的行数、列数
        rows = len(mat_a)
        cols = len(mat_a[0])
        for i in range(cols):
            for j in range(rows):
                temp_row.append(mat_a[j][i])
            temp_mat.append(temp_row)
            temp_row = []
        # 将转置后的二维矩阵扁平化,匹配预期输出格式
        return [num for row in temp_mat for num in row]
    return wrapper

@transpose_matriks
def matrixY():
    # 修正原矩阵为2行2列结构
    X = [[3,2],[4,5]]
    return X

result = matrixY()
print(f"matrixY = {result}")

运行输出

matrixY = [3,4,2,5]

内容的提问来源于stack exchange,提问作者Ivan Dwi nugraha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03