以一定顺序遍历N个数组

时间:2018-12-07 20:48:15

标签: python arrays iteration

我想以某种方式遍历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

1 个答案:

答案 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