【问题标题】:How to calculate all the combinations of lists如何计算列表的所有组合
【发布时间】:2017-12-27 14:02:18
【问题描述】:

我遇到了一个 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 模块的东西,但我无法让它工作。

感谢您的帮助。

【问题讨论】:

  • 对于预期的输出,您需要 range(x)..eg 0,1,...x-1 的所有可能组合; 1,0,2,....x-1;等等?
  • 您可能希望使用itertools 模块。

标签: python list combinations


【解决方案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]]

【讨论】:

  • 非常感谢,这正是我所需要的。同时,元素的数量及其范围是变量。我猜有可能用循环来做到这一点?
猜你喜欢
  • 2022-01-16
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多