我試圖找出將兩個列表合併成所有可能組合的最佳方法。所以,如果我開始與兩個列表如下:Python將兩個列表合併爲所有可能的組合
list1 = [1, 2]
list2 = [3, 4]
結果列表看起來像這樣:
[[[1,3], [2,4]], [[1,4], [2,3]]]
也就是說,它基本上會產生一個列表的列表,與之間的所有可能的組合他們倆。
我一直在通過itertools進行工作,我很確定會有答案,但我不能想出辦法讓它按照這種方式行事。我來最接近的是:
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
print list(itertools.product(list1, list2))
它生產:
[(1, 5), (1, 6), (1, 7), (1, 8), (2, 5), (2, 6), (2, 7), (2, 8), (3, 5), (3, 6), (3, 7), (3, 8), (4, 5), (4, 6), (4, 7), (4, 8)]
所以它在各列表項的所有可能的組合,但不是所有可能產生的名單。我如何得到這個發生?
編輯:最終目標是能夠單獨處理每個列表以確定效率(我正在使用的實際數據更復雜)。因此,在上述原來的例子,它的工作是這樣的:
list1 = [1, 2]
list2 = [3, 4]
Get first merged list: [[1,3], [2, 4]]
Do stuff with this list
Get second merged list: [[1,4], [2, 3]]
Do stuff with this list
如果我得到了我上述的輸出「的名單列表的列表」,然後我可以把它變成一個for循環和進程。其他形式的輸出可以工作,但似乎最簡單的工作。
'[[[1,3],[2,4]],[[1,4],[2,3]]]爲什麼列表列表?爲什麼不列出清單?什麼是標準?什麼時候進入第一或第二名單?我期望預期的結果是'[[1,3],[2,4],[1,4],[2,3]]' –
這就是itertools.product給我的東西(只是一個列表的元組而不是列表的列表)。我並沒有試圖在兩個列表中找到所有可能的項目組合,而是通過合併這兩個列表來生成所有可能的列表。 我要添加另一個編輯,試圖用更簡單的英文來解釋,而不僅僅是預期的代碼輸出。 – GeoJunkie
你想要兩個列表中所有可能的交織嗎?就像洗牌過程中會發生什麼一樣。所以例子'[1,2],[3,4]'會產生這樣的序列:'1 2 3 4/1 3 2 4/1 3 4 2/3 4 1 2/3 1 4 2/3 1 2 4'。 –