Python - 从数组的数组中获取数据组合

Python - get combination of data from array of arrays

我有一个数组,其中包含其他数组,这些数组在给定位置包含可能的数据值。示例:

data = [['A'],['A','B'],['A','B'],['A','B','D'],['0','2']]  

根据该数据,可能的值是(例如):

"AAAA0"  # (00000)  
"AAAA2"  # (00001)  
"AAAD0"  # (00020)  

等等。
我需要的是从这些单个数组中获取所有可能的数据组合,但数据的顺序很重要:

是否有一些 Python 模块可以处理这个问题(我找到了 itertools,但它并不完全符合我的需要),或者有人知道如何做到这一点?

试试这个:

data = [['A'], ['A','B'], ['A','B'], ['A','B','D'], ['0','2']]
size = 5

def rec(cur):
    if len(cur) == size:
        print(cur)
        return

    for x in data[len(cur)]:
        rec(cur + [x])

rec([])

输出:

['A', 'A', 'A', 'A', '0']
['A', 'A', 'A', 'A', '2']
['A', 'A', 'A', 'B', '0']
['A', 'A', 'A', 'B', '2']
['A', 'A', 'A', 'D', '0']
['A', 'A', 'A', 'D', '2']
['A', 'A', 'B', 'A', '0']
['A', 'A', 'B', 'A', '2']
['A', 'A', 'B', 'B', '0']
['A', 'A', 'B', 'B', '2']
['A', 'A', 'B', 'D', '0']
['A', 'A', 'B', 'D', '2']
['A', 'B', 'A', 'A', '0']
['A', 'B', 'A', 'A', '2']
['A', 'B', 'A', 'B', '0']
['A', 'B', 'A', 'B', '2']
['A', 'B', 'A', 'D', '0']
['A', 'B', 'A', 'D', '2']
['A', 'B', 'B', 'A', '0']
['A', 'B', 'B', 'A', '2']
['A', 'B', 'B', 'B', '0']
['A', 'B', 'B', 'B', '2']
['A', 'B', 'B', 'D', '0']
['A', 'B', 'B', 'D', '2']

我想你需要这里的 itertools.product:

import itertools
[''.join(p) for p in itertools.product(*data)]

#['AAAA0',
# 'AAAA2',
# 'AAAB0',
# 'AAAB2',
# 'AAAD0',
# 'AAAD2',
# 'AABA0',
# 'AABA2',
# 'AABB0',
# 'AABB2',
# 'AABD0',
# 'AABD2',
# 'ABAA0',
# 'ABAA2',
# 'ABAB0',
# 'ABAB2',
# 'ABAD0',
# 'ABAD2',
# 'ABBA0',
# 'ABBA2',
# 'ABBB0',
# 'ABBB2',
# 'ABBD0',
# 'ABBD2']