繁体   English   中英

列表的所有可能组合

[英]All possible combinations of a list of a list

当组合列表中的列表时,我非常需要一些算法帮助。 假设我具有以下数据结构:

fields = [  ['a1', 'a2', 'a3'],
            ['b1', 'b2', 'b3'],
            ['c1', 'c2', 'c3'],
            ['d1', 'd2', 'd3']  ]

我正在尝试编写一个生成器(Python),该生成器将产生各项的每种可能组合,以便以下代码:

for x in thegenerator(fields):
    print(x)

将给出以下输出:

['a1', 'b1', 'c1', 'd1']
['a1', 'b1', 'c1', 'd2']
['a1', 'b1', 'c1', 'd3']
['a1', 'b1', 'c2', 'd1']
['a1', 'b1', 'c2', 'd2']
['a1', 'b1', 'c2', 'd3']
...
['a3', 'b3', 'c3', 'd3']

但是,今天我的思维定势已完全消失,因此我无法想到如何最好地使用Python迭代结构以最干净的方式获得所有组合。 我敢肯定,这已经有人做过,但是在google和stack上进行了几次搜索后,我放弃了寻找关键字的正确组合,以便为该问题找到合适的算法。

有什么想法可以解决这个问题的最干净的算法是什么?

只需使用itertools.product ,它就可以完成您要尝试的操作。 如果您对算法感兴趣,可以随时查看源代码。

itertools.product(*fields)

暂无
暂无

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

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