Python错误:AttributeError:';非类型';对象没有属性';len';

Python错误:AttributeError:';非类型';对象没有属性';len';,python,Python,我的代码非常简单,但我不明白它为什么会抛出这个错误 def median(numbers): newnumbers = numbers.sort() length = newnumbers.len() print length median([4,6,1]) 我在网上搜索过,也在网上搜索过,len()是获取列表长度的正确方法。但是,我不断得到错误“AttributeError:'NoneType'对象没有属性'len'” 我做错了什么?谢谢 这里有两个问题:

我的代码非常简单,但我不明白它为什么会抛出这个错误

def median(numbers):
     newnumbers = numbers.sort()
     length = newnumbers.len()
     print length

median([4,6,1])
我在网上搜索过,也在网上搜索过,len()是获取列表长度的正确方法。但是,我不断得到错误“AttributeError:'NoneType'对象没有属性'len'”


我做错了什么?谢谢

这里有两个问题:

  • 列表上的
    sort()
    方法只是修改列表,而不返回新的列表,因此
    newnumbers
    None
  • 您应该编写
    len(newnumbers)
    ,而不是
    newnumbers.len()

    • 这里有两个问题:

      • 列表上的
        sort()
        方法只是修改列表,而不返回新的列表,因此
        newnumbers
        None
      • 您应该编写
        len(newnumbers)
        ,而不是
        newnumbers.len()
      numbers.sort()
      在适当的位置工作-它更改数字,但返回
      None
      ,因此这就是
      newnumbers
      包含的内容。 您应该使用
      newnumbers=sorted(numbers)
      ,这将解决异常

      但是,请注意,排序不是必需的,因为您只是返回输入列表的长度。因此:

      def median(numbers):
          print len(numbers)
      
      也会达到同样的效果。(并且您没有返回中间值)

      numbers.sort()
      工作到位-它更改数字,但返回
      None
      ,因此这就是
      newnumbers
      包含的内容。 您应该使用
      newnumbers=sorted(numbers)
      ,这将解决异常

      但是,请注意,排序不是必需的,因为您只是返回输入列表的长度。因此:

      def median(numbers):
          print len(numbers)
      

      也会达到同样的效果。(并且您没有返回中间值)

      查找列表长度的语法不正确


      唯一的更改是
      len(newnumbers)
      ,这是必需的。排序没有唯一的目的,因为您没有显示元素,所以无论排序如何,长度都将保持不变。

      查找列表长度的语法不正确


      唯一的更改是
      len(newnumbers)
      ,这是必需的。排序并不是唯一的目的,因为您没有显示元素,所以无论排序如何,长度都将保持不变。

      这是一个错误,但不是给定错误的根本原因。@chepner您是对的--我稍微回避了这个问题。我的错!这是一个错误,但不是给定错误的根本原因。@chepner你是对的——我稍微掩饰了一下这个问题。我的错!首先,对列表进行排序不会改变长度,因此似乎没有必要。谢谢。我只发布了我正在编写的函数的一部分。首先,对列表进行排序不会改变长度,因此似乎没有必要。谢谢。我只发布了我正在编写的函数的一部分。我想函数是不完整的,他打算返回
      numbers[len(numbers)/2]
      。如果列表长度相等,这也不是中间值。我认为指出额外的错误对他很有用,就像你在回答中对len所做的那样。我认为函数是不完整的,他打算返回
      数字[len(数字)/2]
      。如果列表长度相等,这也不是中值。我认为指出额外的错误对他很有用,就像你在回答len时所做的那样。