我目前正在处理的问题是:
我想编写一个名为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):
答案 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']
这几乎是合并排序算法的一种实现。