第一种方法:
def merge(mylist1,mylist2):
mylistall=[]
while len(mylist1) >0 and len(mylist2)>0:
if mylist1[0]<mylist2[0]:
mylistall.append(mylist1[0])
del mylist1[0] #删除
else:
mylistall.append(mylist2[0])
del mylist2[0] # 删除
mylistall.extend(mylist1)
mylistall.extend(mylist2)
return mylistall
mylist1=[11,3,5,7,9]
mylist2=[8,4,2,6]
mylist1.sort() #排序
mylist2.sort()
print(mylist1)
print(mylist2)
#print(mylist1+mylist2)#直接归并
print(merge(mylist1,mylist2))
第二种方法:
###### 如果要归并的文件过大,没办法一次性读到内存,就需要利用下标来归并
def merge(mylist1,mylist2):
mylistall=[]
i=0
j=0
while i< len(mylist1) and j <len(mylist2)>0: #有一个结束,没有必须要对比
if mylist1[i] <mylist2[j]: #谁大选谁
mylistall.append(mylist1[i])
i+=1 #下标移动
elif mylist1[i] >mylist2[j]:
mylistall.append(mylist2[j])
j+=1 #下标移动
else:
mylistall.append(mylist2[j])
i+=1
j+=1
while i<len(mylist1): #粘贴尾部
mylistall.append(mylist1[i])
i+=1
while j < len(mylist2):
mylistall.append(mylist2[j])
j += 1
#mylistall.extend(mylist1)
#mylistall.extend(mylist2)
return mylistall
mylist1=[11,3,5,7,9,4]
mylist2=[8,4,2,6]
mylist1.sort() #排序
mylist2.sort()
print(mylist1)
print(mylist2)
#print(mylist1+mylist2)#直接归并
print(merge(mylist1,mylist2))