def print_array_with_markers(arr, pValue): out = "[" for i in range(len(arr)): if pValue == i: out += '«' out += str(arr[i]) + '»' + ", " else: out += str(arr[i]) + ", " out = out[0:len(out) - 2] out += "]" return out def merge_sorted(nums1, m, nums2, n): p1 = m - 1 # set p1 to the last initialized element of nums1 p2 = n - 1 # set p2 to the last element of nums2 print("\n\t\tInitialising p1 to the last data element of nums1:", sep = "") print("\t\t\t", print_array_with_markers(nums1, p1), sep = "") print("\t\t\tp1: ", p1, ", value: ", nums1[p1], sep = "") print("\n\t\tInitialising p2 to the last data element of nums2:", sep = "") print("\t\t\t", print_array_with_markers(nums2, p2), sep = "") print("\t\t\tp1: ", p2, ", value: ", nums2[p2], sep = "") # Driver code def main(): m = [9, 2, 3, 1, 8] n = [6, 1, 4, 2, 1] nums1 = [[23, 33, 35, 41, 44, 47, 56, 91, 105, 0, 0, 0, 0, 0, 0], [1, 2, 0], [1, 1, 1, 0, 0, 0, 0], [6, 0, 0], [12, 34, 45, 56, 67, 78, 89, 99, 0]] nums2 = [[32, 49, 50, 51, 61, 99], [7], [1, 2, 3, 4], [-99, -45], [100]] k = 1 for i in range(len(m)): print(k, ".\tnums1: ", nums1[i], ", m: ", m[i], sep = "") print("\tnums2: ", nums2[i], ", n: ", n[i], sep = "") print("\n\tMerged list: ", merge_sorted(nums1[i], m[i], nums2[i], n[i]), sep = "") print("-"*100, "\n") k += 1 if __name__ == "__main__": main()