给定N个集合。任务是编写一个程序,按给定顺序对所有集合进行笛卡尔积。 实例 :
null
Input:1st set: 1 22nd set: A 3rd set: x 4th set: 5 6Output:[['1', 'A', 'x', '5'], ['1', 'A', 'x', '6'], ['2', 'A', 'x', '5'], ['2', 'A', 'x', '6']]Input:1st set: 1 22nd set: A 3rd set: x y z Output:[['1', 'A', 'x'], ['1', 'A', 'y'], ['1', 'A', 'z'], ['2', 'A', 'x'], ['2', 'A', 'y'], ['2', 'A', 'z']]
方法: 该方法是在开始时计算集合1和集合2的乘积,然后集合1和集合2的结果将与集合3有一个乘积,然后集合1、集合2、集合3的结果将与集合4有一个笛卡尔积,依此类推,直到集合n。 以下是上述方法的实施情况。
Python3
# Python program for cartesian # product of N-sets # function to find cartesian product of two sets def cartesianProduct(set_a, set_b): result = [] for i in range ( 0 , len (set_a)): for j in range ( 0 , len (set_b)): # for handling case having cartesian # product first time of two sets if type (set_a[i]) ! = list : set_a[i] = [set_a[i]] # coping all the members # of set_a to temp temp = [num for num in set_a[i]] # add member of set_b to # temp to have cartesian product temp.append(set_b[j]) result.append(temp) return result # Function to do a cartesian # product of N sets def Cartesian(list_a, n): # result of cartesian product # of all the sets taken two at a time temp = list_a[ 0 ] # do product of N sets for i in range ( 1 , n): temp = cartesianProduct(temp, list_a[i]) print (temp) # Driver Code list_a = [[ 1 , 2 ], # set-1 [ 'A' ], # set-2 [ 'x' , 'y' , 'z' ]] # set-3 # number of sets n = len (list_a) # Function is called to perform # the cartesian product on list_a of size n Cartesian(list_a, n) |
输出:
[[1, 'A', 'x'], [1, 'A', 'y'], [1, 'A', 'z'], [2, 'A', 'x'], [2, 'A', 'y'], [2, 'A', 'z']]
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END