在python列表上排序插入

时间:2017-10-12 16:29:23

标签: python-3.x list sorting

大家早上好, 这是我的函数,它应该对一些数据进行递归排序插入:

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)]

有人可以纠正我的功能吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

这应该有用。

def sorted_insert(w_i,sim,neighbors, i=0):
    if len(neighbors) == i or sim > neighbors[i][1]:
        neighbors.insert(i, (w_i,sim))
    else:
        sorted_insert(w_i,sim,neighbors, i+1)
n=[]
sorted_insert("w1",0.6,n)
sorted_insert("w1",0.3,n)
sorted_insert("w1",0.5,n)
sorted_insert("w1",0.8,n)
sorted_insert("w1",0.7,n)
print n
# [('w1', 0.8), ('w1', 0.7), ('w1', 0.6), ('w1', 0.5), ('w1', 0.3)]