簡體   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