0
早上好大家好, 这里是我的功能是应该做一些数据的递归排序插入:Python列表排序上插入
def sorted_insert(w_i,sim,neighbors):
if neighbors==[]:
neighbors.append((w_i,sim))
elif neighbors[0][1]<sim:
neighbors.insert(0,(w_i,sim))
else:
sorted_insert(w_i,sim,neighbors[1:])
return neighbors
的问题是,这个功能不会插入值在中间,这里是一系列插入:
>>> n=[]
>>> n=sorted_insert("w1",0.6,n)
>>> n=sorted_insert("w1",0.3,n)
>>> n=sorted_insert("w1",0.5,n)
>>> n=sorted_insert("w1",0.8,n)
>>> n=sorted_insert("w1",0.7,n)
>>> n
[('w1', 0.8), ('w1', 0.6)]
是否有人可以纠正我的功能? 在此先感谢。
当您在递归调用中传递副本时,您正在插入列表的一个*副本中:'neighbors [1:]'。 –
不说缺乏正确的缩进 –
此外,而不是重新发明轮子,使用['bisect'](https://docs.python.org/3/library/bisect.html)模块及其''insort * '方法 –