我有一個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]]
我想過,但循環嵌套循環的數量將根據所輸入的不同而不同。有人可以提出一個好的算法嗎?
我有一個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]]
我想過,但循環嵌套循環的數量將根據所輸入的不同而不同。有人可以提出一個好的算法嗎?
你想要的是一個carthesian product。 itertools
has 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)]
我當時只差一點 – J0HN
我只是寫了一些絕對的垃圾來嘗試做同樣的事情。 –
難道這些組合? –
你可以請你提供你的例子和預期的輸出在有效的Python。 – msvalkon
@metatoaster這似乎是這個問題的另一種問題。 – ebarr