2014-03-27 40 views
0

我有一個Python列表,如[[1 2 3] [4 5] [3] [1]],我想生成所有可能的排列。輸出應該是這樣的生成列表清單的交叉產品

[[1 4 3 1] [1 5 3 1] [2 4 3 1] [2 5 3 1] [3 4 3 1] [3 5 3 1]]

我想過,但循環嵌套循環的數量將根據所輸入的不同而不同。有人可以提出一個好的算法嗎?

+0

難道這些組合? –

+0

你可以請你提供你的例子和預期的輸出在有效的Python。 – msvalkon

+0

@metatoaster這似乎是這個問題的另一種問題。 – ebarr

回答

5

你想要的是一個carthesian productitertoolshas a function product,它正是:

import itertools 
a = [[1, 2, 3], [4, 5], [3], [1]] 
p = itertools.product(*a) 
print list(p) 

此輸出

[(1, 4, 3, 1), 
(1, 5, 3, 1), 
(2, 4, 3, 1), 
(2, 5, 3, 1), 
(3, 4, 3, 1), 
(3, 5, 3, 1)] 
+1

我當時只差一點 – J0HN

+0

我只是寫了一些絕對的垃圾來嘗試做同樣的事情。 –