如何计算列表的所有组合

时间:2017-07-21 13:31:14

标签: python list combinations

我在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] .Values = 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模块的东西,但我不能让它工作。

向你寻求帮助。

1 个答案:

答案 0 :(得分: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],[2,0,1],[2,0,2],[2,1,0],[2,1,1],[2,1,2],[2,2] ,0],[2,2,1],[2,2,2]]