我试着解决它但是,我不能...... 请帮帮我,我不知道为什么会出现这个错误。
def sorted_point_list(lst):
import math
def distance(point):
return math.sqrt(point[0]**2 + point[1]**2)
def max_point(lst):
def max_distance(lst):
if lst == []:
return 0
else:
return max(distance(lst[0]),max_distance(lst[1:]))
a = max_distance(lst)
for i in lst:
if distance(i) == a:
return i
def iter_(lst,result):
if lst == []:
return result
c = max_point(lst)
return iter_(lst.remove(c),c+result)
return iter_(lst,[])
答案 0 :(得分:2)
这通常发生在您将None
作为某些内容的返回值时,您会假设您将获得其他值(在这种情况下为列表)。
您的max_point()
函数在所有情况下都不会返回值。因此,在这些情况下它会返回None
。这可能是您收到的错误消息的来源。
此外,您正在处理列表的remove()
方法,就好像它返回一个列表一样。它不是;它修改了列表,但返回None
。这也是错误的可能来源。
顺便说一句,嵌套功能的方式通常不是一个好主意。每次调用外部函数时都会重新定义内部函数,这可能会显着降低性能,特别是如果在循环中调用外部函数。 (同样适用于import
,每次调用sorted_point_list()
时都会执行。{/ p>
答案 1 :(得分:1)
问题似乎是lst.remove(c)
,remove()
更改了列表并返回None
。你假设它是一个列表。
在max_distance()
内,您将lst[0]
传递给distance()
,对于None
,它会引发错误None Type object is not subscriptable
。