我想以某种方式遍历n个数组。 数组的数量不确定。
这将是一个示例:
此条目:
[['A', 'B', 'C'], ['D', 'E'], ['F', 'G']]
此输出应打印:
[ADF, ADG, AEF, AEG, BDF, BDG, BEF, BEG, CDF, CDG, CEF, CEG]
要更详细地订购它们:
ADF - ADG - AEF - AEG - BDF - BDG - BEF - BEG - CDF - CDG - CEF - CEG
111 112 121 122 211 212 221 222 311 312 321 322
数字是前面数组中每个字母的索引。
另一个例子:
输入:
[['A', 'B', 'C'], ['D', 'E'], ['F', 'G', 'H']]
输出:
ADF - ADG - ADH - AEF - AEG - AEH - BDF - BDG - BDH - BEF - BEG - BEH - CDF - CDG - CDH - CEF - CEG - CEH
111 112 113 121 122 123 211 212 213 221 222 223 311 312 313 321 322 323
是否有一种使递归函数获得该顺序的方法?我试图找到具有每个数组长度的模式,但是找不到此解决方案。我正在尝试用python
答案 0 :(得分:1)
这只是一种产品:
from itertools import product
[''.join(x) for x in product(['A', 'B', 'C'], ['D', 'E'], ['F', 'G'])]
# ['ADF', 'ADG', 'AEF', 'AEG', 'BDF', 'BDG', 'BEF', 'BEG', 'CDF', 'CDG', 'CEF', 'CEG']
递归方式:
def prod (sets):
if not sets : return ['']
res=[]
for x in sets[0]:
for y in prod(sets[1:]):
res.append (x+y)
return res