python以排序顺序递归合并2个列表

时间:2015-05-07 02:25:34

标签: python list sorting recursion

我想对单个列表进行排序,因为我是从递归的2个排序列表中创建的。这是我到目前为止所写的:

def list_creation (list_one,list_two):
   if list_one == [] and list_two == []:
       return []
   else:
       if list_one != [] and list_two != []:
           if list_one[0] <= list_two[0]:
               return [list_one[0],list_two[0]] + list_creation(list_one[1:],list_two[1:])
           else:
               return [list_two[0],list_one[0]] + list_creation(list_one[1:],list_two[1:])

print(list_creation([10,11,12,13],[14,15,16,17]))
print(list_creation([3,6,9,12],[4,8,12,16]))

这适用于第二个打印语句,但不适用于第一个。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你的逻辑错误。您应该逐项添加项目,而不是成对添加。例如,请考虑[1,2][3,4]。您的算法将配对[1,3,2,4],这显然是错误的。主要思想是先添加1,然后使用其余列表(即[2][3,4]以递归方式调用该算法。当然,您还应该考虑其中一个列表为空而另一个列表不为空的情况。