Python错误:AttributeError:' NoneType'对象没有属性' len'

时间:2014-06-12 18:40:10

标签: python

我的代码很简单,但我无法弄清楚它为什么会抛出这个错误?

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

median([4,6,1])

我在网上搜索,而且SO和len()是获取列表长度的正确方法。但是,我一直收到错误" AttributeError:' NoneType'对象没有属性' len'"

我在这里做错了什么?谢谢!

3 个答案:

答案 0 :(得分:6)

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

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

def median(numbers):
    print len(numbers)

会完成同样的事情。 (而且你没有返回中位数)

答案 1 :(得分:2)

这里有两个问题:

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

答案 2 :(得分:0)

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

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