组合两个名称列表并对它们进行排序以生成一个已排序的名称列表

时间:2016-05-29 06:39:19

标签: python list sorting

我目前正在处理的问题是:

我想编写一个名为combine(L1,L2)的函数,它将两个排序列表作为输入,将两个列表中的所有元素组合成一个排序列表,然后返回该列表。例如,

    L1 = ["Alice", "Bob", "Charlie", "Eve"]

    L2 = ["Adam", "Chloe", "David"]

返回的列表将是

    ["Adam", "Alice", "Bob", "Charlie", "Chloe", "David", "Eve"]. 

除了追加之外没有内置列表方法,不允许排序函数。

这是我到目前为止所做的:

    def convertString(s):
        return s==str(s)

    def compareName(n):
        for i in n:
            if i[i]<="A":
                newList.append(i)
        return newList

    # This function combines two lists and produces a final sorted list.
    def combine(L1,L2):
        newList=[]
        L1=convertString(L1)
        L2=convertString(L2)
        for c in range(L1):

1 个答案:

答案 0 :(得分:0)

你可能已经弄清楚了,但这是你可以采取的一种方式:

    L1 = ["Alice", "Bob", "Charlie", "Eve"]
    L2 = ["Adam", "Chloe", "David"]

    def merge_sorted_lists(L1, L2):

        sorted_list = []

        # Copy both arg lists to make sure  original lists are not
        # modified
        l1 = L1[:]
        l2 = L2[:]

        while len(l1) > 0 and len(l2) > 0:
            if (l1[0] <= l2[0]): # Compare both heads
                item = l1.pop(0) # Pop from the head
            else:
                item = l2.pop(0)

            sorted_list.append(item)

        # Add the remaining of the lists
        sorted_list += l1 + l2

        return sorted_list

    # Output
    ['Adam', 'Alice', 'Bob', 'Charlie', 'Chloe', 'David', 'Eve']

这几乎是合并排序算法的一种实现。