The third list is not sorted. When you make your final extension, 1 is inserted at the end of the final list. You must sort your lists before calling merge.
In other words, your entry should be:
all_lst = [[2, 7, 10], [0, 4, 6], [1, 3, 11]]
These merging methods consist in assuming that the signatures are streamlined.
For example, take these two lists:
left = [1, 3]
right = [2, 4]
results = []
The merger is as follows:
if left[0] < right[0]:
results.append(left[0])
left.remove(left[0])
so now
results = [1]
left = [3]
right = [2,4]
but if you have:
left = [3, 1]
right = [2, 4]
results = []
The merger is as follows:
if left[0] < right[0]: #false
else:
results.append(right[0])
right.remove(right[0])
so now
results = [2]
left = [3,1]
right = [4]
.