Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。
题目:
合并2个升序的整数列表A和B,形成一个排序后的列表。如:A=[1, 3, 5],B=[2, 4, 6, 8, 10],输出排序后的列表 [1, 2, 3, 4, 5, 6, 8, 10],并返回。
分析:
1、遍历2个列表,比较2个列表中的数,将其添加至新的列表中。
2、若短的列表遍历完,则长的列表继续循环向新的列表中添加剩余的数。
实现:
def merge_list(list1, list2):
'''
合并两个有序列表到新的列表中
:param list1: 有序列表1
:param list2: 有序列表2
:return: 一个新的有序列表
'''
i, j = 0, 0 # 记录两个有序列表的索引
new_list = [] # 存放有序列表的新列表
while i < len(list1) and j < len(list2): # 比较两个列表的值
if list1[i] < list2[j]: # 第1个列表中的数比第2个列表中的数大
new_list.append(list1[i])
i += 1
else: # 第1个列表中的数比第2个列表中的数小
new_list.append(list2[j])
j += 1
while i < len(list1): # 短列表剩余的数添加至新列表中
new_list.append(list1[i])
i += 1
while j < len(list2): # 短列表剩余的数添加至新列表中
new_list.append(list1[j])
j += 1
return new_list
A = [2, 4, 7]
B = [1, 3, 5, 7]
C = [2, 6]
print(merge_list(A, B))
print(merge_list(B, C))
print(merge_list(A, C))
结果:
[1, 2, 3, 4, 5, 7, 7]
[1, 2, 3, 5, 6, 7]
[2, 2, 4, 6, 7]
【结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!