Two pointers do not have to be in the same list. Merging two sorted lists, you hold a pointer in each; at every step you take the smaller one and move only that list's pointer on.
i = j = 0out = []while i < len(a) and j < len(b):if a[i] <= b[j]:out.append(a[i])i += 1else:out.append(b[j])j += 1return out + a[i:] + b[j:]
This is the heart of merge sort, which you will meet later. What to see for now: two pointers, one moves at each step, neither ever goes back.