from numpy import prod
the_list = [[111, 182], [264,4, 271], [48, 98, 104, 134, 141, 143, 180, 213, 225, 244, 278]]
prod_lengths = prod(list(map(len, the_list)))
result = list(zip(*(x*(prod_lengths//len(x)) for x in the_list)))

def get_combination(*args):
    for i in range(prod(list(map(len, the_list)))):
        yield tuple(lst[i%len(lst)] for lst in args)

result2 = list(get_combination(*the_list))

from itertools import product
resultX = list(product(*the_list))

assert result == result2
assert sorted(resultX) == sorted(result)
assert sorted(resultX) == sorted(result2)

print("Lengths:", len(result), len(result2), len(resultX))

#for i in range(1, len(result)):
#    print((result[i][0]!=result[i-1][0])+(result[i][1]!=result[i-1][1])+(result[i][2]!=result[i-1][2]), result[i])