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 * '方法 –