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

运行Numpy代码出现AttributeError: 'builtin_function_or_method'无tolist属性报错

问题排查

报错直接原因

错误出现在全局均值计算的代码行:

(new_array.mean.tolist())

Numpy数组的mean是需要调用的内置方法,你此处没有添加调用括号(),相当于直接对方法对象本身调用tolist(),因此触发了builtin_function_or_method 没有 tolist 属性的报错。其余统计项的全局计算都正确添加了调用括号,仅mean的全局计算漏写。

其他隐含bug

你当前代码还存在两个逻辑错误:

  • 长度校验的try...except写法不符合Python语法,except后只能接异常类型,不能直接写判断条件,当前的长度校验完全不生效,传入不足9个元素的列表时会在reshape步骤直接报错
  • 结果字典calculations定义在全局作用域,多次调用函数时会复用之前的结果,导致返回值异常

修复后的完整代码

import numpy as np

def calculate(input_list):
    # 先做长度校验
    if len(input_list) != 9:
        raise ValueError("List must contain nine numbers")
    # 转换数组并reshape
    new_array = np.array(input_list).reshape(3, 3)
    # 函数内部初始化结果字典
    calculations = {}
    calculations['mean'] = [
        new_array.mean(axis=0).tolist(),
        new_array.mean(axis=1).tolist(),
        new_array.mean().tolist() # 补全调用括号
    ]
    calculations['variance'] = [
        new_array.var(axis=0).tolist(),
        new_array.var(axis=1).tolist(),
        new_array.var().tolist()
    ]
    calculations['standard deviation'] = [
        new_array.std(axis=0).tolist(),
        new_array.std(axis=1).tolist(),
        new_array.std().tolist()
    ]
    calculations['max'] = [
        new_array.max(axis=0).tolist(),
        new_array.max(axis=1).tolist(),
        new_array.max().tolist()
    ]
    calculations['min'] = [
        new_array.min(axis=0).tolist(),
        new_array.min(axis=1).tolist(),
        new_array.min().tolist()
    ]
    calculations['sum'] = [
        new_array.sum(axis=0).tolist(),
        new_array.sum(axis=1).tolist(),
        new_array.sum().tolist()
    ]
    return calculations

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:36:08