在某个ord中迭代N个数组

2024-05-14 19:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想以某种方式迭代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来做


Tags: 方式数组cefcdg例子cdfbdfadf
1条回答
网友
1楼 · 发布于 2024-05-14 19:41:42

它只是一个产品:

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

相关问题 更多 >

    热门问题