is there pythonic method generate combinations between multiple list? (similar cartesian product more complicated) example: a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] # ... # there more 3 lists expected output: 1. [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 2. [(1, 4, 8), (2, 5, 7), (3, 6, 9)] 3. [(1, 4, 9), (2, 5, 7), (3, 6, 8)] 4. [(1, 5, 7), (2, 4, 8), (3, 6, 9)] 5. ... update: thanks quick reply~!! to clarify question: the result non-repeated combinations of cartesian product of list a, b, c. it can done ugly method: 1) generate whole list of cartesian product from itertools import product, combinations, chain t = list(product(a, b, c)) 2) using combinations generate possible results p = list(combinations(t, 3)) 3) filter repeated conditions cnt = len(list(chain(a, b, c))) f = [x x in p if len(set(chain(*x))) == cnt] update2: expected result generated ugly method: ((1, 4, 7), (2, 5, 8), (3, 6, 9)) ((1, 4, 7), (2, 5, 9), (3, 6, 8)) ((1, 4, 7), (2, 6, 8),...