2017-07-21 50 views
0

我在Python問題上被阻止,希望有人能幫助我。如何計算列表的所有組合

問題實際上很簡單。

我試圖建立與所有可能的組合列表,但列表的元素有不同的範圍。

這裏是我的代碼,我試圖做一些for循環,但它不工作。

for j in range(0,size): 


    for k, val in enumerate(self.Algo.Inputs[j].Values): 
     self.Commandlist[j] = k 

self.Commandlist是一個帶有固定範圍的列表,並且首先填入零。

self.Commandlist = [0,0,0]

self.Algo.Inputs [j]的.Values給我各元件的尺寸,例如,如果self.Algo.Inputs [0]。值= 4 self.Algo.Inputs [1] .Values = 1 self.Algo.Inputs [2] .Values = 2

我想要的所有組合,[0,0,0],[1, 0,0],[2,0,0],[3,0,0],[4,0,0],[0,1,0],[1,1,0],[2,1, 0],[3,1,0],[4,1,0]等。

我想我忘了一個循環,但我無法弄清楚。我也嘗試了itertools模塊的一些東西,但我不能讓它工作。

Thans爲您提供幫助。

+0

期望的輸出你想要所有可能的範圍組合(x)..例如0,1,... x-1; 1,0,2,.... X-1;等等? – depperm

+2

您可能希望使用'itertools'模塊。 –

回答

1

如前所述可以使用itertools,例如像:

import itertools 
a = b = c = range(3) # you can specify different range for each one 
[list(x) for x in list(itertools.product(a, b, c))] 

結果:

[[0,0,0],[0,0,1],[0,0 ,2],[0,1,0],[0,1,1],[0,1,2],[0,2,0],[0,2,1],[0,2,2] ],[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2], [1,2,0],[1,2,1],[1,2,2],[2,0,0,0],[2,0,1],[2,0,2],[2 ,1,0],[2,1,1],[2,1,2],[2,2,0],[2,2,1],[2,2,2]]

+0

非常感謝,這正是我所需要的。同時,元素的數量和範圍是變量。我可以用循環做到這一點嗎? – PythonItsLife