从一组数字到另一组数字的所有可能路径

时间:2019-03-13 15:24:33

标签: python

我想找到从[0,0,0,0,0,0]到[1,1,1,1,1,1,1]的所有可能路径。例如:

path_i = [[0,0,0,0,0,0], 
          [0,1,0,0,0,0],
          [0,1,1,0,0,0], 
          [0,1,1,0,0,1], 
          [0,1,1,1,0,1],
          [0,1,1,1,1,1],
          [1,1,1,1,1,1]]

将是这种可能路径的一个例子。

我可以想象这样做的一些非常可怕的方法(将1随机添加到每个列表项(零),然后迭代直到拥有所有唯一路径)。但是,我相信必须有更好的方法

编辑:要求澄清每个路径中的步骤

其中存在的总和变化1,例如

 [0,0,0,0,0,0] -> [0,0,0,0,1,0] is a step

 [0,0,0,0,0,0] -> [0,0,1,0,1,0] is NOT a step

在每个路径中,应该只有7个步骤

预先感谢 J

1 个答案:

答案 0 :(得分:4)

因此,您很遗憾我们有7!种方法来查找路径,您可以为此使用itertools.permutations

from itertools import permutations
paths = permutations(range(7), 7)

list_paths = []

for path in paths:
    tmp = [0]*7
    list_path = [tmp[:]]
    for index in path:
        tmp[index] = 1
        list_path.append(tmp[:])
    list_paths.append(list_path)

您所有的路径都在list_paths