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])
ZnJvbSBudW1weSBpbXBvcnQgcHJvZAp0aGVfbGlzdCA9IFtbMTExLCAxODJdLCBbMjY0LDQsIDI3MV0sIFs0OCwgOTgsIDEwNCwgMTM0LCAxNDEsIDE0MywgMTgwLCAyMTMsIDIyNSwgMjQ0LCAyNzhdXQpwcm9kX2xlbmd0aHMgPSBwcm9kKGxpc3QobWFwKGxlbiwgdGhlX2xpc3QpKSkKcmVzdWx0ID0gbGlzdCh6aXAoKih4Kihwcm9kX2xlbmd0aHMvL2xlbih4KSkgZm9yIHggaW4gdGhlX2xpc3QpKSkKCmRlZiBnZXRfY29tYmluYXRpb24oKmFyZ3MpOgogICAgZm9yIGkgaW4gcmFuZ2UocHJvZChsaXN0KG1hcChsZW4sIHRoZV9saXN0KSkpKToKICAgICAgICB5aWVsZCB0dXBsZShsc3RbaSVsZW4obHN0KV0gZm9yIGxzdCBpbiBhcmdzKQoKcmVzdWx0MiA9IGxpc3QoZ2V0X2NvbWJpbmF0aW9uKCp0aGVfbGlzdCkpCgpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcHJvZHVjdApyZXN1bHRYID0gbGlzdChwcm9kdWN0KCp0aGVfbGlzdCkpCgphc3NlcnQgcmVzdWx0ID09IHJlc3VsdDIKYXNzZXJ0IHNvcnRlZChyZXN1bHRYKSA9PSBzb3J0ZWQocmVzdWx0KQphc3NlcnQgc29ydGVkKHJlc3VsdFgpID09IHNvcnRlZChyZXN1bHQyKQoKcHJpbnQoIkxlbmd0aHM6IiwgbGVuKHJlc3VsdCksIGxlbihyZXN1bHQyKSwgbGVuKHJlc3VsdFgpKQoKI2ZvciBpIGluIHJhbmdlKDEsIGxlbihyZXN1bHQpKToKIyAgICBwcmludCgocmVzdWx0W2ldWzBdIT1yZXN1bHRbaS0xXVswXSkrKHJlc3VsdFtpXVsxXSE9cmVzdWx0W2ktMV1bMV0pKyhyZXN1bHRbaV1bMl0hPXJlc3VsdFtpLTFdWzJdKSwgcmVzdWx0W2ldKQ==