我有一个数组,其中包含其他数组,这些数组在给定位置保存可能的数据值。示例:
data = [['A'],['A','B'],['A','B'],['A','B','D'],['0','2']]
根据这些数据,可能的值是(例如):
"AAAA0" # (00000)
"AAAA2" # (00001)
"AAAD0" # (00020)
等等。
我需要的是从这些单个数组获得所有可能的数据组合,但数据顺序很重要:
是否有一些Python模块可以处理这个问题(我找到了itertools,但它并不完全符合我的要求),或者有人知道如何做到这一点?
答案 0 :(得分:1)
我认为你需要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']
答案 1 :(得分:0)
试试这个:
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']