【问题标题】:.sort() giving me a NonType error for my function [duplicate].sort() 给我的函数一个 NonType 错误[重复]
【发布时间】:2019-12-15 01:23:00
【问题描述】:

我正在尝试创建一个函数来计算列表的平均值,不包括最大值和最小值。我想对我的列表进行排序,但是当我这样做时,我得到一个“NonType”错误。这是我的代码:

def ave_no_max_min(DataList):
    return sum(DataList.sort()[1:-1])/(len(DataList)-2)
print(ave_no_max_min([2,4,3,5,11])) ##should return 

【问题讨论】:

  • list.sort() 是一个就地操作——它修改 list 而不返回它。执行print(type([3, 2, 1].sort())) 返回<class 'NoneType'>。
  • .sort() 返回什么(提示它不是列表)。
  • 你做过任何调试吗?
  • @juanpa.arrivillaga 问对了问题。这是两秒钟的调试时间,有时根本没有 (ha),因为我认为我的 IDE 会捕捉到这一点。

标签: python non-type


【解决方案1】:

方法 sort 对给定列表进行排序并返回 None。因此,您将列表切片应用于 NoneType 对象。

def ave_no_max_min(DataList):
    DataList.sort()
    return sum(DataList[1:-1])/(len(DataList)-2)
print(ave_no_max_min([2,4,3,5,11]))

【讨论】:

  • 变量和函数名应该遵循lower_case_with_underscores风格。
  • 只是在处理 OP 的代码@AlexanderCécile
  • 当然,但我看不出有什么理由不能改变,或者至少提到,对吧?
  • 因为和原问题没有关系,所以我不这么认为
猜你喜欢
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多