tde*_*a05 0 python python-2.7 nonetype
我目前正在学习如何编写python 2.7代码但是我在下面的代码中遇到了一个令人困惑的错误,它尝试(假设效率非常低)返回输入的中位数.
def median(lst):
lst = lst.sort()
median = 0
if len(lst) == 1:
median = lst[0]
elif len(lst) % 2 == 0:
median_sum = lst[len(lst) / 2 - 1] + lst[len(lst) / 2 + 1]
median = median_sum / 2.0
else:
median = lst[len(lst)/ 2 - 1]
return median
print median([1])
Run Code Online (Sandbox Code Playgroud)
上面是我的代码,它不断给我以下错误:
Traceback (most recent call last):
File "C:/Python27/SAVED DOCS/test3.py", line 16, in <module>
print median([1])
File "C:/Python27/SAVED DOCS/test3.py", line 6, in median
if len(lst) == 1:
TypeError: object of type 'NoneType' has no len()
Run Code Online (Sandbox Code Playgroud)
似乎我在调用len(lst)时遇到问题lst = [1]因为python似乎认为它是一个None变量?我很困惑.
在python的控制台终端上,我可以输入len([1]),我得到1的结果没有任何问题.另外请记住,我完全清楚这不是做我想做的最好的方法,但我只是开始学习python!
有任何想法吗?
lst.sort()对列表进行就地排序并返回None.所以lst = lst.sort()设置lst为None.
我认为最好的办法是做
lst = sorted(lst)
Run Code Online (Sandbox Code Playgroud)
这不会就地更改列表,因此引用此函数之外的相同列表的变量不会更改.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |