--- tags: data_structure_python --- # Cartesian product <img src="https://img.shields.io/badge/-easy-brightgreen"> Given `n` sets, compute the Cartesian product. <ins>**Example:**</ins> ``` Input: # n = 3 sets = [ [1,2,3], ['a','b','c'], [4,5] ] Output: [ [1, 'a', 4], [1, 'a', 5], [1, 'b', 4], [1, 'b', 5], [1, 'c', 4], [1, 'c', 5], [2, 'a', 4], [2, 'a', 5], [2, 'b', 4], [2, 'b', 5], [2, 'c', 4], [2, 'c', 5], [3, 'a', 4], [3, 'a', 5], [3, 'b', 4], [3, 'b', 5], [3, 'c', 4], [3, 'c', 5] ] ``` # Solution ### Solution 1: Recursive ```python= def cartesian_product(i=0, sets, answers=[], partial=[]): if i == len(sets): answers.append(partial) else: for elt in sets[i]: cartesian_product(i+1, sets, answers, partial + [elt]) return answers ``` ### Solution 2: Iterative ```python= def cartesian_product(sets): answers = [[]] for i in range(len(sets)): partial = [] for res in answers: for elt in sets[i]: partial.append(res + [elt]) answers = partial return answers ```