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时所做的那样。