繁体   English   中英

生成 python 中 3 个一组的 2 个列表元素的组合

[英]Generating combinations of elements of 2 lists in sets of 3 in python

我在下面有 2 个列表

list_1 = ['A','B','C']
list_2 = ['D','E','F']

尝试生成组合以复制以下 output

(AD, BE, CF), (AD, BF, CE), (AE, BD, CF), (AE, BF, CD), (AF, BD, CE) (AF, BE, CD)

到目前为止,我已经能够使用 itertools 创建组合。

list = [list_1, list_2]

combination = [p for p in itertools.product(*list)]

这给了我

[('A', 'D'),
 ('A', 'E'),
 ('A', 'F'),
 ('B', 'D'),
 ('B', 'E'),
 ('B', 'F'),
 ('C', 'D'),
 ('C', 'E'),
 ('C', 'F')]

但不确定如何进一步进行。

只有zip第一个列表和第二个列表的所有排列:

from itertools import permutations

def combs(l1, l2):
    for p in permutations(l2, len(l2)):
        yield list(map(''.join, zip(l1, p)))
        # or simpler:
        # yield [a+b for a, b in zip(l1, p)]

>>> list(combs(list_1, list_2))
[['AD', 'BE', 'CF'], ['AD', 'BF', 'CE'], ['AE', 'BD', 'CF'], ['AE', 'BF', 'CD'], ['AF', 'BD', 'CE'], ['AF', 'BE', 'CD']]

一些文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM