我在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模块的东西,但我不能让它工作。
向你寻求帮助。
答案 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]]