我的代码很简单,但我无法弄清楚它为什么会抛出这个错误?
def median(numbers):
newnumbers = numbers.sort()
length = newnumbers.len()
print length
median([4,6,1])
我在网上搜索,而且SO和len()是获取列表长度的正确方法。但是,我一直收到错误" AttributeError:' NoneType'对象没有属性' len'"
我在这里做错了什么?谢谢!
答案 0 :(得分:6)
numbers.sort()
有效 - 它会更改数字,但会返回None
,这就是newnumbers
包含的内容。
您应该使用newnumbers = sorted(numbers)
,这将解决异常。
但请注意,不需要排序,因为您只需返回输入列表的长度。所以:
def median(numbers):
print len(numbers)
会完成同样的事情。 (而且你没有返回中位数)
答案 1 :(得分:2)
这里有两个问题:
sort()
方法只修改列表,而不返回新列表,因此newnumbers
为None
。len(newnumbers)
,而不是newnumbers.len()
。答案 2 :(得分:0)
查找列表长度的语法不正确。
唯一的更改是len(newnumbers)
,这是必需的。排序没有唯一目的,因为您没有显示元素,所以无论排序如何,长度都将保持不变。