在python中找到两个列表的所有有序组合

时间:2019-03-05 17:12:42

标签: python list combinations

我正在尝试使用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文件)。

1 个答案:

答案 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='')

Try it online!

zip只是成对的(1, 4)(2, 5)(3, 6);将这三个参数解压缩为product会使product在每个对中每个可能的值的选择中循环,从而产生:

123
126
153
156
423
426
453
456