You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修复AttributeError: 'list' object has no attribute 'shape'错误?

解决AttributeError: 'list' object has no attribute 'shape'的问题

嘿,这个报错我太熟悉了!咱们先搞清楚问题出在哪:.shape是NumPy数组独有的属性,而你传入的grades是普通的Python列表,自然没有这个属性,所以才会抛出这个错误。下面分两种情况给你解决方案:

情况1:你确实在处理普通嵌套列表

如果grades是类似[[85, 90], [78, 82], [92, 88]]这样的二维列表,那咱们用Python原生的方法就能获取行数和列数:

  • 行数直接用len(grades)就能拿到
  • 列数如果所有行的长度一致,可以用len(grades[0]),但最好先判断列表是否为空,避免报错

修改后的代码示例:

def computeFinalGrades(grades):
    a = []
    # 先处理空列表的情况
    if not grades:
        N, M = 0, 0
    else:
        N = len(grades)  # 获取行数
        M = len(grades[0])  # 获取列数(假设所有行长度相同)
    # 这里继续写你的后续逻辑...

如果你的列表行长度可能不一样(比如有的行多一列少一列),可以用列表推导式获取每一行的长度:

row_lengths = [len(row) for row in grades]

情况2:你本来想处理NumPy数组

如果你原本的需求就是用NumPy来处理数据,那只需要先把普通列表转换成NumPy数组,就能用.shape属性了:

首先确保你已经安装了NumPy(没装的话跑pip install numpy),然后修改代码:

import numpy as np

def computeFinalGrades(grades):
    a = []
    # 将普通列表转换为NumPy数组
    np_grades = np.array(grades)
    N, M = np_grades.shape
    # 后续逻辑继续...

这样就能正常获取数组的行数和列数啦~

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

火山引擎 最新活动