我想找到从[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
答案 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