简体   繁体   English

查找两个列表的所有可能组合

[英]Find all possible combinations of two lists

Given two lists of arbitrary length:给定两个任意长度的列表:

list1 = ['a', 'b', 'c']
list2 = ['1', '2', '3']

list1 is the list of objects and list2 is the possible values of each object.How do I find all possible combinations of these two lists (I'm not sure if that's the right terminology) list1是对象列表, list2是每个对象的可能值。如何找到这两个列表的所有可能组合(我不确定这是否是正确的术语)

Expected output:预期输出:

[
    [('a', '1'), ('b', '1'), ('c', '1')],
    [('a', '1'), ('b', '1'), ('c', '2')],
    [('a', '1'), ('b', '1'), ('c', '3')],
    [('a', '2'), ('b', '1'), ('c', '1')],
    [('a', '2'), ('b', '1'), ('c', '2')],
    [('a', '2'), ('b', '1'), ('c', '3')],
    [('a', '3'), ('b', '1'), ('c', '1')],
    [('a', '3'), ('b', '1'), ('c', '2')],
    [('a', '3'), ('b', '1'), ('c', '3')],
    # etc
]

You can use itertools.product() to get Cartesian product of input iterables, and zip them :您可以使用itertools.product()获取输入迭代的笛卡尔积,并将它们压缩:

from itertools import product

a = ['a', 'b', 'c']
b = ['1', '2', '3']
print([list(zip(a, p)) for p in product(b,repeat=3)])

Output:输出:

[[('a', '1'), ('b', '1'), ('c', '1')], [('a', '1'), ('b', '1'), ('c', '2')], [('a', '1'), ('b', '1'), ('c', '3')], [('a', '1'), ('b', '2'), ('c', '1')], [('a', '1'), ('b', '2'), ('c', '2')], [('a', '1'), ('b', '2'), ('c', '3')], [('a', '1'), ('b', '3'), ('c', '1')], [('a', '1'), ('b', '3'), ('c', '2')], [('a', '1'), ('b', '3'), ('c', '3')], [('a', '2'), ('b', '1'), ('c', '1')], [('a', '2'), ('b', '1'), ('c', '2')], [('a', '2'), ('b', '1'), ('c', '3')], [('a', '2'), ('b', '2'), ('c', '1')], [('a', '2'), ('b', '2'), ('c', '2')], [('a', '2'), ('b', '2'), ('c', '3')], [('a', '2'), ('b', '3'), ('c', '1')], [('a', '2'), ('b', '3'), ('c', '2')], [('a', '2'), ('b', '3'), ('c', '3')], [('a', '3'), ('b', '1'), ('c', '1')], [('a', '3'), ('b', '1'), ('c', '2')], [('a', '3'), ('b', '1'), ('c', '3')], [('a', '3'), ('b', '2'), ('c', '1')], [('a', '3'), ('b', '2'), ('c', '2')], [('a', '3'), ('b', '2'), ('c', '3')], [('a', '3'), ('b', '3'), ('c', '1')], [('a', '3'), ('b', '3'), ('c', '2')], [('a', '3'), ('b', '3'), ('c', '3')]]

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

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