1 2 3 4 5 6 7
from itertools import product from functools import reduce def cartesian(*items): for cart in product(*items): yield reduce(lambda x, y: x + y, cart)