pythonは2つの並べ替えられたリストを1つの並べ替えられたリストに統合することを実現する
: 1
#
def merge_list(a,b):
if not a:
return b
if not b:
return a
a_index = b_index = 0
ret = list()
while a_index < len(a) and b_index < len(b):
if a[a_index] <= b[b_index]:
ret.append(a[a_index])
a_index += 1
else:
ret.append(b[b_index])
b_index += 1
if a_index < len(a):
ret.extend(a[a_index:])
if b_index < len(b):
ret.extend(b[b_index:])
return ret
if __name__ == "__main__":
#
lt1 = [1,8,12,13]
lt2 = [5,8,17,28]
lt3 = [1,90,98,99,100]
res = merge_list(lt1,lt2)
res1 = merge_list(res,lt3)
print(res)
print(res1)
###################################結果
[1, 5, 8, 8, 12, 13, 17, 28] [1, 1, 5, 8, 8, 12, 13, 17, 28, 90, 98, 99, 100]
複数のソート対象リストの場合、reduce()関数を使用してメソッド2を使用するとよい.
二:方法2
from functools import reduce
lts = list()
lts.append(lt1)
lts.append(lt2)
lts.append(lt3)
res2 = reduce(merge_list,lts)
print(res2)