将两个排序的列表按降序合并为一个

时间:2018-09-27 02:14:37

标签: python recursion merge

我已经能够弄清楚如何以升序合并两个排序的列表,但是我很难找到一种在相反方向进行合并的方法。如何将两个列表按降序合并到一个列表中而又不反转字符串呢?

1 个答案:

答案 0 :(得分:1)

您只需要以相反的方式做所有事情-从尾部而不是头部中取出项目,进行比较时选择两者中较大的一个,而当另一个用尽时以相反的顺序返回其余列表:

def merge(lst1, lst2):
    if not lst1:
        return lst2[::-1]
    if not lst2:
        return lst1[::-1]
    if lst1[-1] < lst2[-1]:
        return [lst2[-1]] + merge(lst1, lst2[:-1])
    else:
        return [lst1[-1]] + merge(lst1[:-1], lst2)

这样:

 merge([2,5,9,12], [0,1,3,4,8])

将返回:

 [12, 9, 8, 5, 4, 3, 2, 1, 0]
相关问题