我正在尝试使用python函数,该函数将返回两个列表之间的所有可能的有序组合。 防爆 a = [1、2、3] b = [4,5,6]
输出: 123 126 153 156 423 426 453 456
返回的组合数应为2 ^ n,其中n是列表的长度。列表的长度将始终相同。列表的顺序必须始终保持相同。在示例中:1或4必须始终在第一位置,2或5必须始终在第二位置,而3或6必须始终在第三位置。
已更新 我已经尝试过执行list(itertools.combinations(a + b,3)),但是,这会返回所有组合,包括我不想要的组合(例如125)。必须保留顺序,以便只能在其中包含1或4。第一个位置,只有2或5可以位于第二位置,只有3或6可以位于最后位置。
我的问题是实际创建可能的输出列表。一旦有了清单,我就可以弄乱清单,以显示所需的方式。 (最终,我想输出到CSV文件)。
答案 0 :(得分:1)
zip
(to make the possibilities for each position)和itertools.product
(to cycle the possibilities at each position)的组合使操作变得非常简单:
from itertools import product
a = [1, 2, 3]
b = [4, 5, 6]
for result in product(*zip(a, b)):
print(*result, sep='')
zip
只是成对的(1, 4)
,(2, 5)
和(3, 6)
;将这三个参数解压缩为product
会使product
在每个对中每个可能的值的选择中循环,从而产生:
123
126
153
156
423
426
453
456