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

问题描述 投票:1回答:3

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

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

median([4,6,1])

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

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

python
3个回答
6
投票

numbers.sort()在原地工作 - 它会改变数字,但会返回None,这就是newnumbers所包含的内容。你应该使用newnumbers = sorted(numbers),这将解决异常。

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

def median(numbers):
    print len(numbers)

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


2
投票

这里有两个问题:

  • 列表上的sort()方法只是修改了列表,而没有返回一个新的,所以newnumbersNone
  • 你应该写len(newnumbers),而不是newnumbers.len()

0
投票

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

唯一的变化是需要的len(newnumbers)。由于您没有显示元素,因此没有单独的排序目的,无论排序如何,长度都将保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.