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