给定可能性下两个阵列之间的所有可能组合(PYTHON)



我有两个数组,例如:

array1 = [A, B, C]
array2 = [a, b, c]

我想创建一个矩阵,其中包含这两个数组之间的所有可能组合,方法如下,python代码

[[A, B, C]
[A, B, c]
[A, b, C]
[A, b, c]
[a, B, C]
[a, B, c]
[a, b, C]
[a, b, C]]

使用itertools.productzip:

array1 = ['A', 'B', 'C']
array2 = ['a', 'b', 'c']
from itertools import product
out = list(product(*zip(array1, array2)))

输出:

[('A', 'B', 'C'),
('A', 'B', 'c'),
('A', 'b', 'C'),
('A', 'b', 'c'),
('a', 'B', 'C'),
('a', 'B', 'c'),
('a', 'b', 'C'),
('a', 'b', 'c')]
作为列表的列表

注意。除非需要修改元素,否则应首选上述元组列表

from itertools import product
out = list(map(list,product(*zip(array1, array2))))

输出:

[['A', 'B', 'C'],
['A', 'B', 'c'],
['A', 'b', 'C'],
['A', 'b', 'c'],
['a', 'B', 'C'],
['a', 'B', 'c'],
['a', 'b', 'C'],
['a', 'b', 'c']]
array1=['A','B','C']
array2=['a','b','c']
array1.extend(array2) 
allp = list()
for x in array1:
for y in array1:
for z in array1:
allp.append(x+y+z)

您可以递归生成所有可能的组合。

array1 = ['A','B','C']
array2 = ['a','b','c']
ans = []
def f(x, i):
if i == max(len(array1), len(array2)):
ans.append(x)
else:
try:
f(x + [array1[i]], i + 1)
except IndexError:
pass
try:
f(x + [array2[i]], i + 1)
except IndexError:
pass
f([], 0)
print(ans)

注意:此解决方案也适用于不同长度的数组。如CCD_ 3和CCD_。

相关内容

最新更新